Создание модели с ассоциацией - PullRequest
1 голос
/ 01 марта 2011

У меня есть вопрос, касающийся создания экземпляра модели с ассоциацией принадлежат.

Взят с начала 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 Ответ

1 голос
/ 01 марта 2011

Обе эти две формы работают.

В любом случае у вас есть объект Order с полем customer_id, установленным в ID существующего клиента. Когда вы вызываете customer.orders.create (), эта ассоциация заполняется за кулисами. Во втором примере вы делаете это вручную.

...