2010-09-29 58 views
7

我認爲可以通過關聯創建新模型對象。通過關聯創建新模型對象

class Order < ActiveRecord::Base 
    belongs_to :basket 
end 

class Basket < ActiveRecord::Base 
    has_one :order 
end 

order = Order.new() 
basket = order.basket.new() # NoMethodError: undefined method `new' for nil:NilClass 
+3

有關信息:在Ruby中,'new'上的空括號通常會被省略,即'Order.new'。 – 2010-09-29 12:42:59

回答

23

它,但你的語法是有點不對:

class Order < ActiveRecord::Base 
    belongs_to :basket 
end 

class Basket < ActiveRecord::Base 
    has_one :order 
end 

order = Order.new() 
basket = order.create_basket() 

使用build_basket,如果你不想立即保存籃筐;如果關係爲has_many :baskets,則使用order.baskets.create()order.baskets.build()

+0

感謝克里斯爲您的答覆,出於興趣我試圖籃子= order.basket.new()當關系是has_many:籃子,它工作正常。它的所有非常混亂。 – pingu 2010-09-29 12:15:59

+1

它可能工作,但我不確定order.basket集合是否包含您新創建的對象,這意味着您可以保存'order'並讓所有子對象自動保存並引用''order'(不指定參數) 。 – gertas 2010-09-29 13:23:06

相關問題