Ruby on rails 访问子模型rails中的父属性
正在为我的模型创建条件验证。要检查这一点,我需要检查Parent.Parent_属性是否为true 当前@parent.parent_属性返回nil,即使有效负载有它。我想我遇到了一个问题,它无法访问parent_属性,因为它还没有保存。。。如何在设置验证之前检查父级是否有值 更新 为了清晰起见,我同时创造了父母和孩子。 当我尝试使用Ruby on rails 访问子模型rails中的父属性,ruby-on-rails,ruby,model,Ruby On Rails,Ruby,Model,正在为我的模型创建条件验证。要检查这一点,我需要检查Parent.Parent_属性是否为true 当前@parent.parent_属性返回nil,即使有效负载有它。我想我遇到了一个问题,它无法访问parent_属性,因为它还没有保存。。。如何在设置验证之前检查父级是否有值 更新 为了清晰起见,我同时创造了父母和孩子。 当我尝试使用Parent.find…时,我返回 找不到“父项\u id”=正确\u发票\u名称的父项 更新2 父级和子级中都有一个create,但是下面的JSON是创建带有子级
Parent.find…
时,我返回
找不到“父项\u id”=正确\u发票\u名称的父项
更新2
父级和子级中都有一个create,但是下面的JSON是创建带有子级的父级的东西
{
“parent": {
“parent_id": "PLZDONTSAVE",
“data": 2525.25,
“parent_attribute": true,
“child_attributes":[
{ “child_toy": “123",
“child_data": “ABC" }
]
}
}
父控制器
def create
@parent = Parent.new(parent_params)
if @parent.save
render json: @parent, status: :created, location: @parent
else
render json: @parent.errors, status: :unprocessable_entity
end
end
def parent_params
params.require(:parent).permit(:parent_id, :parent_attribute,
child_attributes:[:child_toy, :child_data, ])
end
除非您在某个地方定义了
@parent
,否则它将是nil
,就像@foo
和@bar
一样。只需使用不带“@”的父对象,即可访问通过关联链接的对象(如您的所属对象)
所以试试这个:
def awesome_method?
parent.parent_attribute == "true"
end
除非您在某个地方定义了@parent
,否则它将是nil
,就像@foo
和@bar
一样。只需使用不带“@”的父对象,即可访问通过关联链接的对象(如您的所属对象)
所以试试这个:
def awesome_method?
parent.parent_attribute == "true"
end
我用下面的代码更新了这两个模型,使其正常工作。借助
在子模型中
belongs_to :parent, inverse_of: :child
在父模型中
accepts_nested_attributes_for :children
has_many :children, inverse_of: :parent
再加上@tbreier的建议,工作完成了 我通过使用以下内容更新这两个模型来实现它。借助
在子模型中
belongs_to :parent, inverse_of: :child
在父模型中
accepts_nested_attributes_for :children
has_many :children, inverse_of: :parent
再加上@tbreier的建议,工作完成了 parent.parent\u attribute
正在返回>NoMethodError(nil:NilClass的未定义方法'parent\u attribute')Hm,您能否显示同时创建父对象和子对象的代码?更新了我的问题,以演示我所看到的同时构建对象的意思。看起来你也明白了!:-)parent.parent\u属性
正在返回>NoMethodError(nil:NilClass的未定义方法'parent\u attribute')Hm,您能显示同时创建父对象和子对象的代码吗?更新了我的问题,以演示我所看到的同时构建对象的意思。看起来你也明白了!:-)