以下是我的模特:
class Hour < ActiveRecord::Base
attr_accessible :time, :user
belongs_to :project
end
class Project < ActiveRecord::Base
attr_accessible :name
has_many :hour, :dependent => :destroy
end
我正在尝试做这样的事情:
hour = Hour.new
#add values to the hour object here
hour.save!
project = Project.find :first
project.hour.add hour #how do I actually do this?
projet.save!
这会引发错误。如何将模型添加到关联?
我来自Doctrine2的PHP背景。在Doctrine2中我会做类似的事情:
$projects->getHours()->add($hour);
另外,我已阅读这些文档:http://guides.rubyonrails.org/association_basics.html。它们似乎涵盖了如何创建关联的所有内容,但我无法找到有关如何使用它们的信息!关于如何与协会合作的任何好文档?
答案 0 :(得分:1)
首先,正确的名称,
has_many :hours
然后,
project.hours << hour
<{3}} 中的4.3.1.2
答案 1 :(得分:0)
您可以像数组一样添加它:
project.hours << hour
但通常使用关联直接构建新模型会更自然:
hour = project.hours.build({ your: "...", attributes: "...", here: "..."})
# Do more stuff with hour
project.save!
(build
方法的行为与new
类似,但出于技术原因,此处必须将其命名为build
或者如果您想立即保存模型:
project.hours.create({ your: "...", attributes: "...", here: "..."})
Rails文档中列出了“神奇”的关联方法。看看has_many
Association Reference。