我正在编写一个rails引擎。
我在应用程序控制器中的gem中有两个方法(authenticate和current_user)。 https://github.com/krunal/aadhar/blob/master/app/controllers/aadhar/application_controller.rb
我想'authenticate'方法应该可以作为父rails应用程序中的before_filter使用。
我希望'current_user'方法可以作为父rails应用程序中的方法和帮助程序使用。
我不知道如何实现这一目标。
在我的父应用程序中,我说有一个帖子控制器。我想以这种方式使用'authenticate'和'current_user'。
PostsController < ApplicationController
before_filter :authenticate
def index
current_user.posts
end
答案 0 :(得分:1)
您在引擎中使用isolate_namespace
(推荐),但这意味着您需要在父应用程序中使用命名空间。因此,如果您将其更改为:
PostsController < Aadhar::ApplicationController
您可以访问authenticate
和current_user
方法。请注意,您必须添加
helper_method :current_user
控制器中的能够从视图中访问它。我试过这个并确认它有效。
答案 1 :(得分:1)
参考 - A way to add before_filter from engine to application
1)在lib / aadhar /中创建了一个新文件authenticate.rb。 authenticate.rb
2)lib / aadhar.rb aadhar.rb
中需要authenticate.rb3)在lib / aadhar / engine.rb engine.rb
中添加了以下行ActiveSupport.on_load(:action_controller) do
include Aadhar::Authenticate
end
4)我的父rails应用程序现在提供了Authenticate和current_user方法。