use*_*621 6 ruby twitter validation model ruby-on-rails
我有注册表格这个验证规则:
validates :email,
:presence => {:message => 'cannot be blank.'},
:allow_blank => true,
:format => {
:with => /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/,
:message => 'address is not valid. Please, fix it.'
},
:uniqueness => true
Run Code Online (Sandbox Code Playgroud)
如果用户填写注册表单电子邮件地址(+正确格式),则执行此规则检查.
现在我正在尝试添加使用Twitter登录的机会.Twitter不提供用户的电子邮件地址.
在这种情况下如何跳过上面的验证规则?
您可以在代码中保存用户时跳过验证.而不是使用user.save!,使用user.save(:validate => false).从Omniauth的Railscasts插曲中学到了这个技巧
我不确定我的答案是否正确,只是想提供帮助。
我想你可以从这个问题中得到帮助。如果我修改您问题的已接受答案,它会像(免责声明:我无法测试以下代码,因为我现在正在工作的计算机中 env 尚未准备好)
validates :email,
:presence => {:message => 'cannot be blank.', :if => :email_required? },
:allow_blank => true,
:format => {
:with => /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/,
:message => 'address is not valid. Please, fix it.'
},
:uniqueness => true
def email_required?
#logic here
end
Run Code Online (Sandbox Code Playgroud)
现在,您更新email_required?方法来确定它是否来自 Twitter!如果来自 Twitter,则返回 false,否则返回 true。
我相信,您:if也需要对 :uniqueness 验证器使用相同的内容。否则它会的。不过,我也不确定:(。抱歉
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |