验证时,我试图在我的子模型中访问我的父模型。我在 has_one 上发现了一些关于逆属性的信息,但我的 Rails 2.3.5 无法识别它,所以它一定从未进入发行版。我不确定这是否正是我需要的。
我想根据父属性有条件地验证孩子。我的父模型已经创建。如果在我对父级进行 update_attributes 时尚未创建子级,则它无权访问父级。我想知道如何访问该父级。应该很简单,像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