Пользовательская проверка Rails - PullRequest
11 голосов
/ 30 июня 2011

У меня есть форма регистрации пользователя с обычными полями (имя, адрес электронной почты, пароль и т. Д.), А также поле «team_invite_code» и всплывающее меню «роль».

Перед созданием пользователя - только в случае, если роль пользователя "child" - мне нужно:

  • проверить, присутствует ли код team_invite_
  • проверить, есть ли в таблице команд команда с равным кодом приглашения
  • связать пользователя с нужной командой

Как написать правильную валидацию в Rails 2.3.6 ?

Я попробовал следующее, но это дает мне ошибки:

validate :child_and_team_code_exists

def child_and_team_code_exists
   errors.add(:team_code, t("user_form.team_code_not_present")) unless
   self.is_child? && Team.scoped_by_code("params[:team_code]").exists?
end

>> NameError: undefined local variable or method `child_and_team_code_exists' for #<Class:0x102ca7fa8>

UPDATE: Этот код проверки работает:

def validate 
   errors.add_to_base(t("user_form.team_code_not_present")) if (self.is_child? && !Team.scoped_by_code("params[:team_code]").exists?)
end

1 Ответ

38 голосов
/ 30 июня 2011

Ваш метод проверки child_and_team_code_exists должен быть закрытым или защищенным методом, в противном случае он становится методом экземпляра

validate :child_and_team_code_exists


private
def child_and_team_code_exists
   errors.add(:team_code, t("user_form.team_code_not_present")) unless
   self.is_child? && Team.scoped_by_code("params[:team_code]").exists?
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...