通过API / Json更新嵌套资源

时间:2017-06-02 15:49:14

标签: ruby-on-rails json api ruby-on-rails-5

我正在构建API端点来更新模型。我可以更新除嵌套资源之外的每一列,我尝试了不同的方法,但似乎没有任何工作

这是我试图发送到服务器的JSON

{
"reservation": {
    "reservation_dates": [
        {
            "is_desirable": true,
            "date": "5-10-2019"
        }
         ]
  }
}

虽然我已将其添加到我的

,但我还是从reservation_date获取了一个未经许可的参数
def permitted_attributes_for_update
params.require(:reservation).permit(:date, :time, :comment, :budget, :currency, :status,
                                    :general_text, :idea_text, :artist_text, :desired_city,
                                    :desired_country, :desired_googleid, :studio_id, :artist_id,
                                    :tattoos, reservation_dates: [], general_url_array: [],idea_url_array: [],
                                    artist_url_array: [])
end

我希望能够直接从JSON更新或者至少允许该数组,以便稍后我可以在我的UpdateService上使用

感谢您的帮助

edit: this is the error I'm getting

1 个答案:

答案 0 :(得分:0)

您需要指定reservation_dates中允许的内容:

params.require(:reservation).permit(reservation_dates_attributes: [:is_desirable, : date], ...)

但是,请注意,如果您的reservation has_many reservation_dates,则会导致冲突:reservation_dates应该是ReservationDate的实例,但您提供哈希值。 rails的方式是使用reservation_dates_attributes而不是reservation_dates