2010-07-07 31 views
1

我有一個Rails應用程序這種關係多對多關係先後在軌

class Folder 
    has_many :elements 
end 

class Element 
    belongs_to :folder 
end 

我的問題是這樣的代碼不起作用

element = Element.first 
a_folder.elements << element 
element.save! 
a_folder.save! 

,但是這一個工程:

element.folder = a_folder 
element.save! 

任何人都可以告訴我爲什麼?

謝謝。

+2

你得到什麼錯誤? – 2010-07-07 13:01:01

回答

8

從軌道documentation

將對象添加到集合 (的has_many或has_and_belongs_to_many) 自動保存對象, 除非父對象(所有者集合的 )尚未存儲數據庫中的 。

因此,如果@folder已保存,然後@folder.elements << @element應該工作。

您還可以添加元素是這樣的:

@folder.elements.create(...) 
+0

@ folder.elements.create(...)是一個非常好的清除方法 – Jimmy 2010-07-07 13:37:28

+0

我真的很喜歡@ folder.elements.create(...) 此錯誤只出現在單元測試中。夾具是錯的:( 謝謝,bjg – pablorc 2010-07-09 10:40:09