我有一个关于使用belongs_to关联实例化模型的问题。
从http://guides.rubyonrails.org/association_basics.html开始:
class Customer < ActiveRecord::Base
has_many :orders, :dependent => :destroy
end
class Order < ActiveRecord::Base
belongs_to :customer
end
此实例化有效:
@order = @customer.orders.create(:order_date => Time.now)
但是这样做也一样吗?
class Order < ActiveRecord::Base
attr_accessible :customer
belongs_to :customer
end
@customer = Customer.new
@order = Order.create(:customer => @customer)
我的实验表明它确实在某种程度上......但由于关联是懒散加载的,在某些情况下可能会很棘手(如果你愿意,我可举一个例子)。
所以我的问题是: 该实例化在多大程度上与前者一样有效?
答案 0 :(得分:1)
这两种形式都有效。
无论哪种方式,您都有一个Order对象,其customer_id字段设置为现有客户的ID。当你调用customer.orders.create()时,它会在幕后填充该关联。在你的第二个例子中,你是手动完成的。