特定の検証エラーを無視します
-
21-09-2019 - |
質問
私はLabellings
とEmails
に属しLabels
を持っています。
各標識は、電子メール/ラベルのペアに対して一意である必要があります - 電子メールが一度だけ「試験」標識することができるように、
。私はvalidates_uniqueness_of :label_id, :scope => :email_id
でこれをやっています。この作品は、予想通ります。
、私は電子メールがすでにそのラベルで標識されている場合、それが一意である場合はラベルを追加し、何もしないようにしたいです。
私のようなもので私のアプリの周りの検証機能を複製する必要はありません
email.labels << label unless email.labels.include?(label)
これは、各ラベル付けを確保することは可能ですが、手動でそれをチェックしたりすることなく、独自のEMAIL_ID / label_idペアを持っているハンドルの例外?
解決
私はそれをテストしていませんが、あなたはおそらく、関連プロキシでのようなもの<<
を上書きすることができます:
class Email < ActiveRecord::Base
has_many :labelings
has_many :labels, :through => :labelings do
def <<(label)
unless proxy_owner.labels.include?(label)
proxy_owner.labelings << Labeling.new(:email => proxy_owner, :label => label)
end
end
end
end
所属していません StackOverflow