Rails接受嵌套属性attr可访问命名

时间:2014-03-25 19:36:49

标签: ruby-on-rails

我有一个模型接受另一个模型的嵌套属性,如下所示:

class House < ActiveRecord::Base
  has_one :owner

  attr_accessible :owner_attributes

  accepts_nested_attributes_for :owner
end

我希望能够:owner_attributes只调用:owner,并能够发布如下所示的json:

{
  "house": {
    "address": "123 Main St",
    "owner": {
      "name": "Jim",
      "age": 9000
    }
}

这似乎违反了rails惯例,但我只想弄清楚它是否可能。

1 个答案:

答案 0 :(得分:0)

将此添加到您的控制器

private
def house_params
  params.require(:house).permit(:house_field_a, :house_field_b, owner_attributes: [:name, :etc])
end

这会将owner参数转换为owner_attributes,允许您POST嵌套owner对象。

然后在控制器操作中,您可以使用house_params代替params[:house]