我有两个相关的模型:
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_items
和donation_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
上更新?
答案 0 :(得分:0)
想想我弄清楚了。 update_attributes
立即保存(或尝试)。相反,我已切换到assign_attributes
。解决其他一些问题,但它似乎解决了主要问题。