как создать гостевого пользователя в Rails 3 + Devise - PullRequest
8 голосов
/ 18 июня 2011

В настоящее время у меня есть приложение rails 3 с устройством.это требует, чтобы пользователи зарегистрировались / авторизовались для доступа.

Я хотел бы включить гостевых пользователей.Таким образом, когда пользователь посещает определенные представления, для него создается учетная запись гостевого пользователя, а затем, если / когда они аутентифицируют / регистрируют этого гостевого пользователя, то он обновляется до обычного пользователя.

Думайте о приложении как о чатеномер.Я хочу, чтобы гостевые пользователи могли присоединиться к чату, а затем зарегистрироваться или войти в твиттер.Но я не хочу заставлять пользователей регистрироваться перед присоединением.

Предложения?

Я нашел это: https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user

Проблема в том, что я добавил помощника, но не понимаю, как инициировать current_or_guest_user.Также не знаете, как инициировать для конкретных разрешенных просмотров?

Есть идеи?Указатели?Спасибо

Ответы [ 3 ]

14 голосов
/ 15 сентября 2012

Еще один более прозрачный способ:

def current_user
  super || guest_user
end

private

def guest_user
 User.find(session[:guest_user_id].nil? ? session[:guest_user_id] = create_guest_user.id : session[:guest_user_id])
end

def create_guest_user
  u = User.create(:name => "guest", :email => "guest_#{Time.now.to_i}#{rand(99)}@example.com")
  u.save(:validate => false)
  u
end
3 голосов
/ 18 июня 2011

После вики просто замените звонки на current_user на current_or_guest_user

Что касается представлений, сделайте это в контроллере с before_filter.

Не видя никакого кода от вас, трудно угадать, но в псевдокоде это будет что-то вроде

class ChatController < ApplicationController
 before_filter authenticate_user!, :except => [:join]  #this will force users to log in except for the join action

  def join
   chat_handle = current_or_guest_user.handle
   # some more code...
  end 
2 голосов
/ 28 января 2013

Оформить заказ этот рельс литой о гостях пользователей.Подробная информация о Devise около 5:40.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...