我想创建一个返回true或false的方法。
Rails.logger.info is_a_valid_email?(params[:user][:email])
if is_a_valid_email(params[:user][:email]) != true
@user.errors.add :email, 'address is not valid.'
end
protected
def is_a_valid_email?(电子邮件)
email_regex = %r{
^ # Start of string
[0-9a-z] # First character
[0-9a-z.+]+ # Middle characters
[0-9a-z] # Last character
@ # Separating @ character
[0-9a-z] # Domain name begin
[0-9a-z.-]+ # Domain name middle
[0-9a-z] # Domain name end
$ # End of string
}xi # Case insensitive
!( email =~ email_regex )
end
出于与应用相关的原因,我需要能够在控制器中进行验证,而不是模型。以上不能可靠地工作。我希望'is_a_valid_email'返回true或false,允许我在错误时应用错误消息。
连连呢? thxs
答案 0 :(得分:2)
你的方法调用中可能有拼写错误:
if is_a_valid_email(params[:user][:email])
你应该在那里添加一个问号:
if is_a_valid_email?(params[:user][:email])
此外,如果您必须在控制器中进行验证,那么您可能做错了。