Ленивая регистрация с RESTful-маршрутизацией в Rails - PullRequest
0 голосов
/ 07 декабря 2011

Я застрял в поисках лучшей практики ...

Я хочу создать «следующую» систему, чтобы пользователь мог следить за автомобилем (получать обновления по электронной почте при изменении цены автомобиля и т. Д.). Часть реализации, которая вызывает у меня головную боль, - это когда я хочу ввести ленивую регистрацию, используя только электронную почту.

Все должно работать как AJAX запросы.

В интерфейсе будет кнопка для запуска последующего действия, которое проверит, зарегистрирован пользователь или нет. Если пользователь вошел в систему, создайте новый элемент CarSubscription, в противном случае отобразите форму, в которой он мог бы ввести свой адрес электронной почты. После отправки формы необходимо создать пользователя без пароля (если электронная почта существует, запросить пароль и войти в систему), а затем создать элемент взаимосвязи.

Задача здесь состоит в том, чтобы использовать перенаправление после отправки формы для действия CREATE CarSubscriptionController. Поскольку я не могу перенаправить с помощью POST, я не могу имитировать действие CREATE или DESTROY.

Решением без RESTful было бы создать 2 действия в cars_controller: следовать и отписаться и позволить им выполнять логику создания и удаления их. Это позволило бы мне просто сохранить путь запроса и использовать его после того, как пользователь введет свою электронную почту и войдет в систему.

Как мне достичь того, что я хочу, используя ресурсы RESTful?

После попытки описать мою проблему здесь, она кажется слишком сложной, и я действительно очень застрял ... В этом сценарии есть 3 разных контроллера и, возможно, 4 запроса.

Любая помощь будет принята с благодарностью!

Пожалуйста, смотрите мою схему ниже: flow chart of follow action

Ответы [ 2 ]

1 голос
/ 21 мая 2013

У меня была очень похожая потребность, и я не мог собрать всю информацию о том, как сделать это вместе с Devise и Rails, в рабочий пример. Вот полностью рабочий пример, основанный на Rails 4, Ruby 2 и Devise 3.0:

https://github.com/mwlang/lazy_registration_demos

1 голос
/ 07 декабря 2011

Не эксперт здесь, я не знаю, является ли это лучшим решением, но я сделал в подобной ситуации:

  1. В вашем контроллере ответьте с помощью JavaScript вместо перенаправления пользователя
  2. В вашем javascript-файле используйте $.post(...), чтобы выдать POST для действия вашего контроллера
  3. Et voilà!

Вы также можете использовать ActiveResource для достижения этой цели, но на самом деле я никогда не пробовал такое решение: http://api.rubyonrails.org/classes/ActiveResource/Base.html#label-Custom+REST+methods

Person.new(:name => 'Ryan').post(:register)

Надеюсь, это поможет

...