访问关注模块方法中的查询

时间:2015-09-02 13:44:14

标签: ruby-on-rails

我有模型user.rb并关注query_filter.rb。

module QueryFilter
  extend ActiveSupport::Concern

  def apply(attr)

  end

end

class User < ActiveRecord::Base
  extend QueryFilter
end

我想为整个模型或查询应用过滤器。
例如:

> User.apply(attributes)
=> #query
> User.where(sex: 'male').apply(attributes)
=> #query

我有两个问题。
首先,我不知道如何访问我在模块方法中调用my方法的查询?
其次User.apply(attributes)无法工作,我可以使用User.all.apply(attributes),但事实并非如此。有没有可能在类名后面调用方法也不能查询?

1 个答案:

答案 0 :(得分:0)

您必须include QueryFilter而不是extend

请参阅http://api.rubyonrails.org/classes/ActiveSupport/Concern.html

但我认为,除了关注点之外,你应该考虑scopes所期望的效果。