authlogic with_scope не работает в Rails 3 для приложения с несколькими учетными записями - PullRequest
2 голосов
/ 10 марта 2011

После обновления до rails 3 authlogic не работает, поэтому я использую гем 'authlogic',: git => 'git: //github.com/odorcicd/authlogic.git',: branch => 'rails3'

Это работает для стандартной настройки, но у меня есть настройка нескольких учетных записей, и я использовал with_scope раньше, поэтому пользователь может войти только в свою учетную запись / поддомен, а не в любую учетную запись / поддомен.

Этот код вМой контроллер приложений работал раньше, но не сейчас, поскольку использует старый поиск, а не новый синтаксис arel.

def current_user_session
    return @current_user_session if defined?(@current_user_session)
    UserSession.with_scope(:account_id => account_id) do
      @current_user_session = UserSession.find
    end
end 

Кто-нибудь смог обновить это для rails 3 или нашел исправление?

Пожалуйста, помогите!

С наилучшими пожеланиями, Ричард

1 Ответ

1 голос
/ 12 марта 2011

РЕДАКТИРОВАТЬ: Очевидно, что authlogic не работает, когда дело доходит до with_scope. Проверьте это для деталей, это также может помочь вам: http://groups.google.com/group/authlogic/browse_thread/thread/41c8d2fc82e1b69c

Используете ли вы authenticates_many? У меня была похожая проблема только сейчас (моя модель, которая идентифицирует учетную запись / поддомен, называется Website, и у меня есть фильтр до, который устанавливает @website). Чтобы это исправить, я сделал следующее:

Я добавил :find_options => { :limit => 1 } к authenticates_many

class Website < ActiveRecord::Base
  authenticates_many :user_sessions, :find_options => { :limit => 1 }

Моя пользовательская модель имеет обычный validations_scope:

acts_as_authentic do |c|
  c.validations_scope = :website_id
end

И мой current_user_session метод стал следующим:

def current_user_session
  return @current_user_session if defined?(@current_user_session)
  @current_user_session = @website.user_sessions.find
end

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

...