Я пытаюсь получить доступ к моей родительской модели в моей дочерней модели при проверке. Я нашел что-то об инверсном свойстве на has_one, но мой Rails 2.3.5 не узнает его, поэтому он, должно быть, никогда не попал в релиз. Я не уверен, что это именно то, что мне нужно.
Я хочу проверить дочерние элементы на основе родительских атрибутов. Моя родительская модель уже создана. Если ребенок не был создан, когда я обновляю атрибуты родителя, он не имеет доступа к родительскому элементу. Мне интересно, как я могу получить доступ к этому родителю. Это должно быть легко, что-то вроде parent.build_child устанавливает parent_id дочерней модели, почему это не делается при создании дочернего элемента для accepts_nested_attributes_for?
Пример:
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
Моя форма стандартная:
<% form_for @parent do |f| %>
<% f.fields_for :child do |c| %>
<%= c.name %>
<% end %>
<% end %>
С помощью метода обновления
def update
@parent = Parent.find(params[:id])
@parent.update_attributes(params[:parent]) # => this is where my child validations take place
end