【问题标题】:authlogic with_scope not working on Rails 3 for multi account applicationauthlogic with_scope 不适用于 Rails 3 的多帐户应用程序
【发布时间】:2011-03-13 06:01:37
【问题描述】:

更新到 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 更新这个或找到修复?

请帮忙!

最好的问候 理查德

【问题讨论】:

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


    【解决方案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
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多