1

のカスタム検証を作成しようとしていstore.websiteます。http://ウェブサイトのフィールドがまたはで始まるかどうかを確認するメソッドが必要https://です。これは私が試したことです:

class Store < ActiveRecord::Base
  validate :website_has_correct_format

  def website_has_correct_format
    self.website = self.website.downcase.start_with?(/https?:\/\//, '')
  end
end

しかし、これはうまくいきません。なんらかの奇妙な理由で、文字通り文字を保存するだけtです。

これを行う正しい方法は何ですか?また、aも入れ:messageてもいいですか?

4

3 に答える 3

1

検証でモデルのデータを変更しないでください。これにはbefore_saveアクションがあります。バリデータは次のようになります。

def website_has_correct_format
  errors.add(:website, 'Wrong website') unless website =~ %r{\Ahttps?://}
end
于 2012-05-28T18:27:32.593 に答える