2015-09-02 190 views
0

我有模型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 

我有兩個問題。
首先,我不知道如何訪問查詢,我已經在模塊方法中調用了我的方法?
其次User.apply(attributes)將無法​​正常工作,我可以使用User.all.apply(attributes)但事實並非如此。有沒有可能在課程名稱或查詢後立即調用方法?

回答

0

你必須include QueryFilter而不是extend

看到http://api.rubyonrails.org/classes/ActiveSupport/Concern.html

不過,我想你應該考慮scopes比關注更理想的效果。

+0

它不與任何幫助,如果我使用包括我可以打電話給我的單個對象方法......我想叫它上查詢或全班 – Gregy

+0

啊,你是對的,我需要把它列入然後添加我關心ClassMethods模塊的方法,但仍然無法訪問我稱之爲此方法的關係 – Gregy

+0

我擔心這是完全錯誤的方法 - 因爲'where'不會返回'User'對象。 –