Rails - метод, который возвращает логическое значение.Иногда становится пустым - PullRequest
0 голосов
/ 22 января 2011

Я хочу создать метод, который возвращает 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, что позволило бы мне применить сообщение об ошибке, если false.

Предложения? thxs

1 Ответ

2 голосов
/ 22 января 2011

Вы, вероятно, получили опечатку в вызове метода здесь:

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

Вы должны добавить туда знак вопроса:

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

Также, если вам нужно выполнить проверку в контроллере,вы, вероятно, делаете что-то не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...