1
phone
フィールドがあるかどうかによって、電子メールをオプションにすることができます。そのようなものがある場合は、存在を確認しないでください。ここでは、コードがあります:別のフィールドの存在に基づいて条件付きで電子メールを要求し、検証する
# model.rb
validates :email, length: {maximum: 255},
uniqueness: {case_sensitive: false},
email: true
validates_presence_of :email, unless: Proc.new {|user| user.phone? }
問題は、ユーザーが空email
フィールドを送信する場合、それはEmail has already been taken
とEmail is not an email
でエラーになり、これはある方法です。
私もemail_validator.rb
ています
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attr_name, value)
unless value =~ MY_EMAIL_REGEX
record.errors.add(attr_name, 'is not an email')
end
end
end
私がしたい:一部の値が入力
- 検証、電子メールの形式は、時に空白(または)nilを許可します電子メールは必要ありません(電話機など)
ありがとう!しかし、この場合は空白の電子メールを許可し、電子メールなしで登録する2番目のユーザは、 'index_users_on_email'というキーに対して「重複エントリ」を取得します。 – abpetkov
@abpetkov: allow_blankの詳細:http://guides.rubyonrails.org/active_record_validations.html#allow-blank –
空白と空白を許可する場合でも、私は 'Duplicate entry'エラーを受け取ります。 – abpetkov