Rails after_initialize solo en "nuevo"
Tengo los siguientes 2 modelos
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
Un deporte no puede existir sin el producto, así que en misports_controller.rb
Yo tenía
def new
@sport = Sport.new
@sport.product = Product.new
...
end
Traté de mover la creación del producto al modelo deportivo, usandoafter_initialize
:
after_initialize :create_product
def create_product
self.product = Product.new
end
Aprendí rápidamente queafter_initialize
e llama a @ cada vez que se instancia un modelo (es decir, desde unfind
llamada). Así que ese no era el comportamiento que estaba buscando.
Cuál es la forma en que debería modelar el requisito de que todossport
tener unproduct
?
Gracia