#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
в моем приложении моя пользовательская модель имеет instance_id, который связан с моделью экземпляра.
User:
id, email, instance_id
Instance:
id, domain
итак, если электронное письмо является bob@yahoo.com , его instance_id равен 5, поскольку (5, yahoo.com ) находится в таблице экземпляров.
Что я хочу сделать, так это каждый раз, когда обновляется запись пользователя, проверять, соответствует ли адрес электронной почты правильному домену. Итак, у меня есть следующее:
after_save :assign_user_to_instance
def assign_user_to_instance
domain = email.split("@").last
user_instance = Instance.find_or_create_by_domain domain
update_attribute(:instance_id, user_instance.id)
end
Проблема в том, что когда это выполняется, это переходит в сумасшедший цикл обновлений базы данных и никогда не заканчивается. Каков правильный способ достичь этого?
Спасибо
Ответ №1:
Попробуйте использовать ‘before_save’ вместо ‘after_save’.