2012-04-17 23 views
1

我有用戶,項目和任務的ID。Rails。創建在同一時間兩個物體,其中一個使用的其他

Users have many tasks 
Projects have tasks 

Tasks belongs to users 
Tasks belong to projects 

任務模型的其中一個字段是Project_id。

我需要的是當用戶創建一個新的任務,新的項目被創建,並創建任務獲取其PROJECT_ID字段中創建新項目的ID,所以它就會自動與它相關聯。

我的問題是,在創建新任務時,該項目尚未建立,所以PROJECT_ID爲空,任何人都可以請至少指向我朝着正確的方向?

+0

看看這個頁面的這一部分:http://guides.rubyonrails.org/association_basics.html#highlighter_387265我認爲這可能會有所幫助 – 2012-04-17 23:22:44

+0

stefan,實際上我的問題不是關於協會,我需要協會來完成這樣,它是如何創建一個任務,並在同一時間的一個項目,並有任務相關聯的新創建的項目,所有在同一時間更成問題。但謝謝! – 2012-04-17 23:31:15

+0

在你的任務控制器,'create'action,添加代碼創建一個項目。 – 2012-04-17 23:36:38

回答

2

如何在before_create回調做什麼呢?

class Task 

    before_create :create_project 

    def create_project 
    new_project = Project.new(...) 

    unless new_project.save 
     self.errors.add(:base, "Couldn't create project.") 
     return false 
    end 

    self.project_id = new_project.id 
    end 

end 

return false位有必要,以防止使用無效Project保存Task對象,並添加錯誤,它可以顯示在您的視圖。

+0

沒問題。祝你的項目好運。 – tsherif 2012-04-18 00:23:15

相關問題