gpt4 book ai didi

ruby-on-rails - accepts_nested_attributes_for & :reject_if. 如何在父关联保存之前防止拒绝?

转载 作者:行者123 更新时间:2023-12-03 16:16:53 25 4
gpt4 key购买 nike

class Gift < ActiveRecord::Base
has_many :contributions
accepts_nested_attributes_for :contributions, :reject_if => proc { |a| a['amount'].blank? }

贡献有一个 :nickname 属性。在 :new 表单中,它预先填充了用户的真实姓名。用户可能决定将其更改为“Uncle Bob”(或其他)。不幸的是,对于 :reject_if,如果在贡献中没有指定金额,则在 @gift 无效的情况下重新加载 :new 时,:nickname 更改将丢失。发生这种情况是因为嵌套的tribution_attributes 被拒绝。我们如何保留 :nickname 更改并仅在实际保存 @gift 时处理拒绝?

最佳答案

class Gift < ActiveRecord::Base
has_many :contributions
accepts_nested_attributes_for :contributions,
:reject_if => proc { |a| a['amount'].blank? }
end

class Contribution < ActiveRecord::Base
belongs_to :gift
validates_presence_of :nickname, :amount
end

...以礼物形式...
f.text_field :nickname, :value => (params[:gift][:contributions_attributes]['0'][:nickname] rescue @m.full_name)

这通过失败的验证保留 :nickname 更改,并且仍然丢弃仅包含 :nickname 的嵌套贡献。

关于ruby-on-rails - accepts_nested_attributes_for & :reject_if. 如何在父关联保存之前防止拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com