authlogic with_scope不适用于多帐户应用程序的Rails 3

时间:2011-03-10 09:28:12

标签: ruby-on-rails ruby ruby-on-rails-3 authlogic

更新到rails 3后,authlogic不起作用,所以我使用gem'authlogic',:git => 'git://github.com/odorcicd/authlogic.git',: branch => 'rails3'

这适用于标准设置,但我有一个多帐户设置,我之前使用with_scope,因此用户只能登录到他们的帐户/子域而不是任何帐户/子域。

我的应用程序控制器中的代码以前工作但现在不是使用旧的find而不是新的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 个答案:

答案 0 :(得分:1)

编辑:显然,在涉及到with_scope时,authlogic有点破碎。 请查看详细信息,它也可以帮助您: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

希望它有所帮助。