あなたはbefore_validation
コールバックにそれを行うだろう:
# in your model
before_validation :normalize_attribute
private
def normalize_attribute
# change `attribute` to your actual attribute's name
self.attribute = attribute.strip.downcase if attribute
end
それとも、カスタムのセッターであることを行うことができます:
# change `attribute` to your actual attribute's name
def attribute=(value)
write_attribute(:attribute, value.strip.downcase) if value
end
は、最初のオプションは、属性の値オブジェクトがあるたびにサニタイズされます値が変更されていなくても保存されます。これは、データベースのレコードがすでに存在するときにこのsanitizeメソッドを導入すると役立ちます。これは、Railsコンソールの1行のコードですべての既存のレコードをサニタイズすることができるためです。Model.find_each(&:save)
。 2番目のオプションは、値が設定されたときにのみサニタイズします。これはもう少しパフォーマンスが良いです。
どちらの場合でもif attribute
を確認することをお勧めします。そうでない場合は、strip.downcase
をnil
に設定すると、例外が発生する可能性があります。
あなたが気にしない場合は、あなたが1つのオプションを選択したときに含める回答を更新してください。 –
@BillyBlobSnortin:Done – spickermann