Tag: 模型

Rails非正统命名模型与缩写

在我正在构建的应用程序中,我使用acts_as_tree关联将XML文件存储在我的数据库中。 我想将类命名为XMLElement但由于大写是非标准的,因此抛出了rails。 它正在从文件名xml_element.rb 。 我尝试将文件名更改为x_m_l_element.rb ,试图让它认为“XML”实际上是两个单词,但这也不起作用。 我应该简单地使用名称XmlElement而不是更理想的XMLElement ,还是有更好的解决方法?

建模许多Rails关联

我试图围绕如何为具有许多has_one关联(20+)的父模型建模我的数据库。 我有一个名为House的模型,它是所有其他模型的父模型: class House < ActiveRecord::Base has_one :kitchen has_one :basement has_one :garage has_one :common_room #… Many other child models end 所有子模型都包含特定于其自己类的唯一属性。 我考虑过STI,但实际上并没有任何可以在模型中使用的共享function或输入。 我还想过制作一个“超级模型”,但这并不是真正遵循Rails最佳实践,而且它将包含200多个列。 是否有其他设计模式或结构可用于高效建模,以便减少数据库调用?

通过关联构建和创建相关对象:如何设置嵌套模型的外键?

我正在使用Ruby on Rails 3.1.0。 我试图保存一个嵌套模型,该模型具有用于存储父模型的外键的属性。 在父模型的创建时,我想将该属性值设置为父模型id值。 在我的模型中,我有: class Article :article_category_relationships # Accept nested model attributes accepts_nested_attributes_for :articles_category_relationships end class Category :article_category_relationships end # The join model: class ArticleCategoryRelationship < ActiveRecord::Base # Table columns are: # – article_id # – category_id # – user_id # – … belongs_to :category belongs_to :article end 在我看来,我有以下几点: … 在我的控制器中,我有: def […]

Rails 3 App中的简单搜索表单未显示

我跑过railscast#37,似乎甚至无法将我的搜索表单显示在我的索引页面上。 我的代码有什么问题吗? 提前致谢! 任何帮助是极大的赞赏。 这是表单所在的索引页面: All users ‘get’ do %> nil %> inheritance人控制器: class UsersController params[:page]) @usersearch = User.search(params[:search]) end … 最后,user.rb文件: … def self.search(search) if search where(‘name LIKE ?’, “%#{search}%”) else all end end

一次将多个记录插入模型

我正在寻找一些最佳实践,当涉及到将数据插入到模型中时,尤其是当要创建大量记录时,到目前为止,我正在检索一些XML并将其保存到模型中 doc = Nokogiri::XML.parse(open(url)) doc.xpath(‘//xmlns:feed/xmlns:entry[xmlns:title[node()]]’).each do |s| cid = s.xpath(“xmlns:id”).text email = s.xpath(“gd:email/@address”).text name = s.xpath(“xmlns:title”).text data = Contact.new( :cid => cid, :email => email, :name => name) data.save end 现在这是逐个插入记录,这在我看来花了太长时间。 我已经读过一个解决方案是使用事务,或者我可以进行单个质量插入? 我的问题是,我将从哪一方面受益最多,以及如何格式化我已经拥有的每一项? 看到我当前设置到新设置的示例将使我受益,因为我将能够更多地理解它并实际从中学习 任何帮助赞赏 谢谢

Rails:validation多个模型的唯一性

有没有办法在两个不同模型中的列之间validation属性的唯一性。 例如: 我有自行车模型和汽车模型。 当我创建一个新的自行车时,我想validation自行车的名称是独一无二的,因为没有其他自行车或具有该名称的汽车。 我不想将它们放在一个模型中,因为它们具有非常不同的属性。 我在轨道上2.3.8 谢谢。

Has_Many通过关联和嵌套属性

我正在尝试创建一个视图,允许我直接创建和编辑我的连接表的值。 这种模式被称为“雇佣”。 我需要能够在我的加入表中创建多行,以便孩子最多可以雇佣2本书。 我遇到了一些麻烦,我怀疑这取决于我的协会…… 我有3个型号。 每个孩子可以有2本书: class Child < ActiveRecord::Base has_many :hires has_many :books, through: :hires end class Hire < ActiveRecord::Base belongs_to :book belongs_to :child accepts_nested_attributes_for :book accepts_nested_attributes_for :child end class Book < ActiveRecord::Base has_many :hires has_many :children, through: :hires belongs_to :genres end 控制器看起来像这样: class HiresController < ApplicationController … def new @hire = Hire.new 2.times […]

将模型中的多个输入字段转换为模型中的一个整数属性

我试图允许用户在同一表单的两个不同的下拉菜单中输入两个不同的东西,它会将一个整数存储到一个评论表中。 我希望用户能够在一个下拉列表中选择model_name ,在另一个下拉列表中选择manufacturer 。 结果将bat_id整数存储到表单中。 (告诉你用户选择哪种蝙蝠) 我已经看到了几个关于日期和时间的问题,但是它们将值直接存储在模型中。 我试图存储一个整数 – bat_id以便bat_id将审查模型直接链接到bat模型。 我发现的例子很接近: ruby on rails多参数属性如何真正起作用(datetime_select) 将多个字段Rails转换为一个模型属性 为一个属性使用多个输入字段 Rails使用多个字段更新单个属性 我的表格现在: Select Brand Select Bat What do you like about this bat? What do you not like about this bat? 我正在提交review表并尝试将这两个提交到bat_id属性。 Select Brand Select Bat 在我的蝙蝠模型中我有: has_many :reviews &在我的评论模型中我有: belongs_to :bat 更新:是否可以使用javascript和我的两个输入组合的隐藏字段来确定我的一个输出bat_id? 更新我更改了我的下拉代码,以便在选中两者时输入manufacturer_id和bat_id 。 但是我仍然认为有一种方法可以在我的review模型中存储一个值。 我使用的javascript非常类似于此

覆盖as_json没有效果?

我试图在我的一个模型中覆盖as_json,部分是为了包含来自另一个模型的数据,部分是为了去除一些不必要的字段。 从我所看到的,这是Rails 3中的首选方法。为了简单起见,让我说我有类似的东西: class Country [:id,:name] ) end end 而在我的控制器中 def show respond_to do |format| format.json { render :json => @country } end end 然而,无论我尝试什么,输出始终包含完整数据,字段不会被“:only”子句过滤。 基本上,我的覆盖似乎没有开始,但如果我改变它,说… class Country < ActiveRecord::Base def as_json(options={}) {foo: "bar"} end end …我确实得到了预期的JSON输出。 我只是弄错了语法吗?

如何连接两个活动记录结果以返回可以进一步过滤的新结果?

想象一下场景…… #models/user.rb class User { :active => 1 } end #models/account.rb class Account { public => true } end end 现在想象一下,我想将User(.id).accounts与Account.public_accounts连接起来,以显示用户可用的所有帐户的列表。 所以你认为我能够将User模型更新为这样。 #models/user.rb class User { :active => 1 } def all_accounts self.accounts + Account.public end end 但是,现在我将无法使用all()方法,因为它不再是那种类型的对象。 在控制器中我想这样做…… #controllers/accounts_controller.rb def search_all User.find(params[:user_id]).all_accounts.all( :offset => params[:offset], :limit => params[:limit] ) end 思考? 更新#1:范围不适用于我的方案。 我简化了我的方案,尝试着解决我的观点。 如上所述,我需要一种方法来组合两个活动记录结果,并保留在我的控制器中进一步过滤它们的能力。 […]