1

列 (文字列型) に一意性を付与したいのですが、関数 and を使用してデータベースに挿入する前に、最初の部分を切り捨てている一部の文字列に問題がありますbefore_save。したがって、切り捨て/フォーマットの後は同じであるはずですが、入力がデータベースの内容と異なる可能性があるため、レールの一意性の検証は機能しません。

最初に文字列を切り捨ててから、その一意性を検証できるようにしたいのですが、 rails を使用してそれが可能かどうかはわかりませんvalidates uniqueness: true。カスタムを書くだけvalidateですか?

4

2 に答える 2

1

おっしゃったように、カスタム バリデータを作成し、validates_with を使用する必要があります。それについての情報はここにあります:

http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_with

DRY 原則に従い、切り捨てロジックへの変更がバリデーターと before_save コールバックの両方に確実に反映されるようにするために、切り捨てられた文字列を返すメソッドを作成し、バリデーターとコールバック内で同じメソッドを使用することをお勧めします。

于 2016-05-28T01:18:58.523 に答える