Sto provando ad accedere al mio modello genitore nel mio modello figlio durante la convalida. Ho trovato qualcosa su una proprietà inversa su has_one, ma il mio Rails 2.3.5 non lo riconosce, quindi non deve averlo mai inserito nella versione. Non sono sicuro se sia esattamente ciò di cui ho bisogno.Rails accept_nested_attributes_for child non ha padre set durante la convalida
Voglio convalidare il bambino in base alle condizioni genitoriali. Il mio modello principale è già stato creato. Se il bambino non è stato creato quando update_attributes sul genitore, non ha accesso al genitore. Mi sto chiedendo come posso accedere a questo genitore. È dovrebbe essere essere facile, qualcosa come parent.build_child imposta l'id padre del modello figlio, perché non lo fa quando costruisce il figlio per accept_nested_attributes_for?
Per esempio:
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
La mia forma è di serie:
<% form_for @parent do |f| %>
<% f.fields_for :child do |c| %>
<%= c.name %>
<% end %>
<% end %>
Con un metodo di aggiornamento
def update
@parent = Parent.find(params[:id])
@parent.update_attributes(params[:parent]) # => this is where my child validations take place
end
Ho avuto lo stesso errore dell'op, ma quando ho provato questo metodo ho ottenuto "Chiave (e) sconosciuta: before_add"? – Kvass