У меня есть следующие 2 модели
class Sport < ActiveRecord::Base
has_many :charts, order: "sortWeight ASC"
has_one :product, :as => :productable
accepts_nested_attributes_for :product, :allow_destroy => true
end
class Product < ActiveRecord::Base
belongs_to :category
belongs_to :productable, :polymorphic => true
end
Спорт не может существовать без продукта, поэтому в моем sports_controller.rb
у меня было:
def new
@sport = Sport.new
@sport.product = Product.new
...
end
Я пытался переместить создание продукта в спортивную модель, используя after_initialize
:
after_initialize :create_product
def create_product
self.product = Product.new
end
Я быстро узнал, что after_initialize
вызывается всякий раз, когда создается экземпляр модели (т.е. из find
вызов). Так что это было не то поведение, которое я искал.
Как мне смоделировать требование о том, чтобы у всего спорта
был продукт
?
Спасибо