У меня есть следующие 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
). Так что это было не то поведение, которое я искал.
Как я должен моделировать требование, чтобы все sport
имели product
?
Спасибо