我有模型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)
,但事实并非如此。有没有可能在类名后面调用方法也不能查询?
答案 0 :(得分:0)
您必须include QueryFilter
而不是extend
请参阅http://api.rubyonrails.org/classes/ActiveSupport/Concern.html
但我认为,除了关注点之外,你应该考虑scopes所期望的效果。