为什么在update_attributes上破坏嵌套记录而不在父保存上?

时间:2016-01-14 19:21:36

标签: ruby-on-rails activerecord nested-attributes

我有两个相关的模型:

class DonationItem < ActiveRecord::Base
  belongs_to :help_request

help_request

我有一个验证器,如果用户试图保存donation_items而没有validate :has_donation_items? ... def has_donation_items? if !self.donation_items.present? errors.add :a_help_request, "must have at least one item." end end ,则会向用户返回错误。

help_request

我正在嵌套表单中更新donation_itemsdonation_items,用户可以在其中销毁单个或多个donation_items。根据{{​​3}},如果用户销毁任何update_attributes,则在保存父级之前,不应在数据库中销毁它们。但我已经证实,在我的情况下,它们在运行@help_request.update_attributes(help_request_params) # donation items get destroyed in the database right here # do some stuff if @help_request.save #do some other stuff if the save is successful 方法后立即被销毁。这是剥离代码:

help_request_params

以下是具有嵌套属性的def help_request_params params.require(:help_request).permit(:id, :name, :description, :event_flag, :due_on_event, :date, :time, :send_notification, :event_id, :invoked, donation_items_attributes: [:id, :name, :amount, :_destroy]) end

update_attributes

有没有理由说明数据库似乎在False上更新?

1 个答案:

答案 0 :(得分:0)

想想我弄清楚了。 update_attributes立即保存(或尝试)。相反,我已切换到assign_attributes。解决其他一些问题,但它似乎解决了主要问题。