Индивидуальная проверка Rails

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

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

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

Как я могу написать правильную проверку в 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

Ваш метод проверки 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