Rails嵌套在JSON中通过模型的属性

时间:2015-04-30 16:07:10

标签: ruby-on-rails ruby json activerecord

我有三个型号。在我的Rails应用程序中,它们看起来如下所示(为简洁起见省略了不必要的代码):

class User < ActiveRecord::Base
  has_many :schedules
  has_many :payouts, :through => :schedules

  accepts_nested_attributes_for :schedules
end

class Schedule < ActiveRecord::Base
  belongs_to :user
  belongs_to :payout
end

class Payout < ActiveRecord::Base
  has_many :schedules
  has_many :users, :through => :schedules
end

这是典型的Rails与直通模型的多对多关联。但是,在前端,当将JSON与POST组合到用户的控制器时,我需要包含尚未创建的user_id。

JSON看起来像这样:

{
  "user": {
    "schedules_attributes": [{
      "payout_id": 5,
      "user_id": null
    }]
  }
}

上述JSON的问题在于user_id未设置,因为它已被创建。该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您要创建新用户和一些关联的计划,则无需为计划指定user_id,Rails将在创建用户记录后自动设置。这就是accepts_nested_attributes_for的工作方式。