3
問:是否可以構建一個類方法作用域,該作用域可以根據表中數組內的值查詢對象?如果是的話,我該怎麼做?查詢數組內值的活動記錄
在我的示例中,我有一個「井」表,其中有一個名爲「well_tags」的數組字段。我想建立一個查詢,返回wells_tags數組中所有具有指定值的對象(如「陶瓷」)。基本的查詢將是這樣的:
@well = Well.all
@query = @well.where(「well_tags contains ceramic」)
然後類方法的範圍會是這個樣子,用「well_tag_search」參數從控制器傳遞:
class Well < ActiveRecord::Base
def self.well_tag_filter(well_tag_search)
if well_tag_search.present?
where(「well_tags contains ceramic")
else
Well.all
end
end
我發現了另一個發佈了一個類似的問題(見下面的鏈接),但我無法得到答案爲我工作......結果總是'零',當我知道應該有至少1個對象。我是一個初學者,使用sqlite(現在)作爲我的數據庫和rails 4.0。
Active Record Query where value in array field
謝謝!
UPDATE:一些進展
我想出如何創建的所有對象的數組,我想用「選擇」方法。但我仍然需要將結果作爲活動記錄對象返回,所以我創建了一個類方法範圍。
@well = Well.select
{ |well| if well.well_tags.present?
then well.well_tags.include? ‘ceramic' end }
@well.class #=> array
錯字...應該閱讀Well.all。在OP中進行了更正。 –