Estoy tratando de acceder a mi modelo principal en mi modelo hijo al validar. Encontré algo sobre una propiedad inversa en el has_one, pero mi Rails 2.3.5 no lo reconoce, por lo que nunca debe haber estado en el lanzamiento. No estoy seguro si es exactamente lo que necesito sin embargo.Rails accepts_nested_attributes_for child no tiene conjunto primario al validar
Quiero validar el hijo de forma condicional en función de los atributos principales. Mi modelo Parent ya ha sido creado. Si el hijo no se ha creado cuando actualizo los atributos en el padre, entonces no tiene acceso al padre. Me pregunto cómo puedo acceder a este padre. Es debería ser ser fácil, algo así como parent.build_child establece el parent_id del modelo hijo, ¿por qué no lo está haciendo cuando construye el hijo para accept_nested_attributes_for?
Por ejemplo:
class Parent < AR
has_one :child
accepts_nested_attributes_for :child
end
class Child < AR
belongs_to :parent
validates_presence_of :name, :if => :some_method
def some_method
return self.parent.some_condition # => undefined method `some_condition' for nil:NilClass
end
end
Mi forma es estándar:
<% form_for @parent do |f| %>
<% f.fields_for :child do |c| %>
<%= c.name %>
<% end %>
<% end %>
Con un método de actualización
def update
@parent = Parent.find(params[:id])
@parent.update_attributes(params[:parent]) # => this is where my child validations take place
end
Tuve el mismo error que el op, pero cuando probé este método, obtuve "Claves desconocidas: before_add"? – Kvass