Rails - 返回布尔值的方法。有时变成空白

时间:2011-01-22 19:33:20

标签: ruby-on-rails ruby-on-rails-3

我想创建一个返回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

1 个答案:

答案 0 :(得分:2)

你的方法调用中可能有拼写错误:

if is_a_valid_email(params[:user][:email])

你应该在那里添加一个问号:

if is_a_valid_email?(params[:user][:email])

此外,如果您必须在控制器中进行验证,那么您可能做错了。