实例化具有关联的模型

时间:2011-03-01 13:27:26

标签: ruby-on-rails activerecord associations instantiation

我有一个关于使用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)

我的实验表明它确实在某种程度上......但由于关联是懒散加载的,在某些情况下可能会很棘手(如果你愿意,我可举一个例子)。

所以我的问题是: 该实例化在多大程度上与前者一样有效?

1 个答案:

答案 0 :(得分:1)

这两种形式都有效。

无论哪种方式,您都有一个Order对象,其customer_id字段设置为现有客户的ID。当你调用customer.orders.create()时,它会在幕后填充该关联。在你的第二个例子中,你是手动完成的。