在rails控制器中包含一个关注模块

rik*_*mbo 2 module ruby-on-rails require include has-scope

这是我的关注文件:controllerconcerns.rb

require 'active_support/concern'

module Query_scopes
  extend ActiveSupport::Concern
  has_scope :title
end
Run Code Online (Sandbox Code Playgroud)

这是我的控制器,我希望将其包含在:api_controller.rb中

class ApiController < ApplicationController
  require 'concerns/controllerconcerns'
  include Query_scopes
  etc etc etc
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

undefined method `has_scope' for Query_scopes:Module
Run Code Online (Sandbox Code Playgroud)

我安装了has_scope gem,如果我只是'has_scope: scopename'在每个单独的控制器中说我希望它应用于它,它工作正常...那么如何在我的所有控制器中应用几行'has_scope'代码?

der*_*yau 6

您应该遵循使用问题的命名约定,并在included do块中包含您想要的内容:)

例如.

module QueryScopes
  extend ActiveSupport::Concern

   included do
     has_scope :title
   end
end
Run Code Online (Sandbox Code Playgroud)

然后:

class ApiController < ApplicationController
  include QueryScopes
end
Run Code Online (Sandbox Code Playgroud)