Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 访问子模型rails中的父属性_Ruby On Rails_Ruby_Model - Fatal编程技术网

Ruby on rails 访问子模型rails中的父属性

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.Parent_属性是否为true

当前@parent.parent_属性返回nil,即使有效负载有它。我想我遇到了一个问题,它无法访问parent_属性,因为它还没有保存。。。如何在设置验证之前检查父级是否有值

更新 为了清晰起见,我同时创造了父母和孩子。 当我尝试使用
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,您能显示同时创建父对象和子对象的代码吗?更新了我的问题,以演示我所看到的同时构建对象的意思。看起来你也明白了!:-)