【问题标题】:How get Devise's current_user method in Rails Engine如何在 Rails Engine 中获取 Devise 的 current_user 方法
【发布时间】:2012-05-19 21:06:33
【问题描述】:

我有一个使用 Devise gem 的 Rails 应用程序,我正在创建一个 Rails 引擎来安装在这个应用程序中。

mount Comments::Engine => '/talk', :as => 'comments'

在引擎中,我想从主应用程序中获取current_user 实例。

在 {main_app}/initializers/cmets.rb

Comments.user_class = "User"
Comments.current_user = "current_user" #current_user is Devise method(works fine in app)

在 {engine}/lib/cmets.rb

require "comments/engine"

module Comments
  mattr_accessor :user_class, :current_user

  def self.user_class
    @@user_class.constantize
  end

  def self.current_user
    send(@@current_user)
  end
end

当我调用 Comments.current_user 时,我收到错误“错误的常量名称 current_user”。

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    接缝我解决了问题。 我会在 Comments 模型中调用 current_user ,但它不起作用。 但是从控制器获取current_user 可以正常工作。 但这不是优雅的方式(。

    【讨论】:

    • current_user 使用会话,因此它不应该在模型上工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2012-03-21
    相关资源
    最近更新 更多