DoubleRenderError в restful_authentication с activ_as_state_machine при активации пользователей - PullRequest
1 голос
/ 13 октября 2008

В проекте, который использует restful_authentication с acts_as_state_machine и электронной почтой активации, я получаю двойную ошибку рендеринга всякий раз, когда пользователь выполняет действие активации по электронной почте.

Я использую по умолчанию

def activate
   self.current_user = params[:activation_code].blank? ? false : User.find_by_activation_code(params[:activation_code])
   if logged_in? && !current_user.active?
   current_user.activate!
   flash[:notice] = "Signup complete!"
   end
   redirect_back_or_default('/')
end

для активации и по умолчанию

def redirect_back_or_default(default)
  redirect_to(session[:return_to] || default)
  session[:return_to] = nil
end

для перенаправления. Метод перенаправления работает во всех остальных случаях, он вызывается одинаково.

Ошибка двойного рендеринга возникает при рендеринге страницы main_page / home, которая маршрутизируется как "/".

Что я должен искать?

1 Ответ

1 голос
/ 14 октября 2008

Действует как конечный автомат, что иногда приводит к некоторому странному поведению, когда сохраненная запись, записанная в базу данных, не синхронизируется с объектом в памяти. Бьюсь об заклад, у вас есть ситуация, когда объект ruby, соответствующий вновь активированному пользователю, не обновляется, даже если поле в базе данных устанавливается (наоборот).

Мне нужно увидеть действие контроллера, которое на самом деле выполняется, чтобы отобразить маршрут, который вы настроили для соответствия "/", но я уверен, что у вас есть слегка противоречивые случаи в этом действии, которые запускаются из-за этой несогласованности в AASM. Попробуйте перезагрузить пользовательский объект в начале этого действия контроллера, чтобы увидеть, исчезнет ли проблема. Если нет, начните отладку, убедившись, что изменения вашего состояния действительно сохраняются в БД.

...