Rails - >设计 - >如何从Module访问current_user

时间:2014-09-13 06:59:01

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

我目前正在使用Rails 3.2.9和devise 3.0.4

我可以毫无问题地访问Controller中的Devise current_user。

但是,当我尝试按如下方式访问Module中的current_user并收到错误时。

c_time = DateTime.current.in_time_zone(current_user.local_timezone)

NameError(未定义的局部变量或方法`current_user' for DateCalculator:Module):

如果有人请告知从Module访问current_user的最佳方式,那将是很棒的。

非常感谢提前。

3 个答案:

答案 0 :(得分:0)

尝试使用此方法而不是使用current_user对象

UserSession.find.user

答案 1 :(得分:0)

如果您的模块执行特定于当前登录用户的操作,则可以按照这种方式执行

config/initializers/user_specific_time.rb
module Devise
    module Controllers
        module Helpers
            def user_specific_time
                c_time = DateTime.current.in_time_zone(current_user.local_timezone)
            end
        end
    end
end

答案 2 :(得分:0)

有一个名为 sentient_user 的Gem,这是一种厚颜无耻的方法,但它完全符合您的需要;),可以访问当前登录的用户,控制器|模型等

https://rubygems.org/gems/sentient_user