导轨accepts_nested_attributes:消除重复项



假设我们有以下模型:

class User < ActiveRecord::Base
    has_many :widgets
    accepts_nested_attributes_for :widgets, allow_destroy: true
end
class Widget < ActiveRecord::Base
    belongs_to :user
    validates :title, presence: true, uniqueness: { scope: [:user_id] }
end

当我保存具有包含重复标题的嵌套小部件属性的用户时,我按预期收到验证错误。 在保存之前避免验证错误并静默消除重复条目的好方法是什么?

谢谢。

如果嵌套属性不符合某些条件,您可以拒绝它们:

accepts_nested_attributes_for :widgets,
  allow_destroy: true,
  reject_if: lambda { |w| Widget.pluck(:title).include?(w.title) && Widget.pluck(:user_id).include?(w.user_id) }

相关内容

  • 没有找到相关文章

最新更新