私は、ドキュメントからこの例外を発生させる代わりに、before_add関連のコールバックで静かにスキップしますか?
has_many :roles, :before_add => :enforce_unique
def enforce_unique(assoc)
false if exists? assoc
end
をやろうとしている:「before_addコールバックが例外をスローした場合、オブジェクトはコレクションに追加されません」。アドオンを防ぐことはできません偽以上使用して、私はこれを行うことを余儀なくしています:
def enforce_unique(assoc)
raise if exists? assoc
end
この方法では、それは追加されませんというのは本当だが、それも取り扱われなければなら例外を発生させます。あまり役に立ちません。私は通常のARコールバックbefore_saveのように振る舞い、FALSEを返すことでも保存(または追加)はできませんが、例外は発生しません。
上記のケースでは、私は無意識にassocを追加しないことをお勧めします。これを行う方法はありますか?私は何かを欠いている?あるいは例外をここで唯一のオプションとしていますか?