2

次のモデルがあるとします。

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

重複するタイトルを含むネストされたウィジェット属性を持つユーザーを保存すると、期待どおりに検証エラーが発生します。検証エラーを回避し、保存する前に重複エントリを静かに削除する良い方法は何ですか?

ありがとう。

4

1 に答える 1

0

特定の基準に一致しない場合は、ネストされた属性を拒否できます。

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) }
于 2013-10-29T03:45:42.320 に答える