2011-02-01 3 views
0

Startup Информация:Rails3, Authlogic и authenticates_many Как код current_account_session helper method?

  • Моя система не делать пользовательские поддомены, чтобы получить правильный счет!
  • Я использую Rails 3.0.x
  • Я использую authlogic 2.1.6
  • Модель счета и модель пользователя
  • Куки присутствует с именем, например account_1_user_credentials, и это правильно!

Модель Account.rb

class Account < ActiveRecord::Base 
    authenticates_many :user_sessions, :scope_cookies => true 
    has_many :users 
end 

Модель User.rb

class User < ActiveRecord::Base 
    acts_as_authentic do |c| 
    c.validations_scope = :account_id 
    end 
    belongs_to :account 
    ... 
end 

ВОПРОС: Как я могу кодировать вспомогательные методы применения?

Документация Authlogic показывает только нормальное осуществление без authenticates_many с scope_cookies:

class ApplicationController 
    helper_method :current_user_session, :current_user 

    private 
    def current_user_session 
     return @current_user_session if defined?(@current_user_session) 
     @current_user_session = UserSession.find 
    end 

    def current_user 
     return @current_user if defined?(@current_user) 
     @current_user = current_user_session && current_user_session.user 
    end 
end 

Но как session_controller.rb (установка current_account_session) и application_controller.rb (реализация четкости current_account_session .. конец) выглядеть?

ответ

2

Если все ваши пользователи получают одинаковый вход, вам необходимо найти учетную запись на основе current_user. Для этого вам не нужно использовать authenticates_many в аккаунтах. Просто аутентифицируйте своего пользователя, а затем получите его учетную запись.

Чтобы установить контроллер, смотрите на примере https://github.com/binarylogic/authlogic_example/blob/master/app/controllers/user_sessions_controller.rb

Примечание: Вы также можете проверить вид, ... для более вдохновения.

Это позволит вам аутентифицировать пользователя и управлять его сеансом. После входа в систему вы должны иметь возможность получать свою учетную запись, поэтому вы можете использовать другой запрос для каждой учетной записи.

Для достижения этой цели, добавьте current_account helper_method, добавив следующие строки в application_controller.rb

class ApplicationController 
    helper_method :current_account 

    private 

    def current_account 
     current_user.account 
    end 
    memoize :current_account 
end 

Не забудьте добавить CURRENT_USER по умолчанию и current_user_session helper_method.

Таким образом, вы всегда можете найти current_account аутентифицированного пользователя во всех своих контроллерах.

 Смежные вопросы

  • Нет связанных вопросов^_^