2013-01-02 87 views
0

這裏是我的模型:Ruby on Rails的增加模型的關聯

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! 

這將引發錯誤。如何將模型添加到關聯中?

我來自一個PHP背景與Doctrine2。在Doctrine2我會做這樣的事情:

$projects->getHours()->add($hour); 

而且,我讀過這些文檔:http://guides.rubyonrails.org/association_basics.html。他們似乎涵蓋了關於如何創建關聯的所有內容,但我無法找到關於如何與他們合作的信息!有關如何與社團合作的好文檔?

回答

0

你可以像一個數組添加:

project.hours << hour 

但往往感覺更多自然地建立新的模型直接使用聯想:

hour = project.hours.build({ your: "...", attributes: "...", here: "..."}) 
# Do more stuff with hour 
project.save! 

(該build方法的行爲像new,但由於技術原因,它必須被命名build這裏)

或者如果你想immedately保存型號:

project.hours.create({ your: "...", attributes: "...", here: "..."}) 

Rails文檔有一個「魔術」關聯方法列表。看看has_many Association Reference