2014-01-14 36 views
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 

回答

0

不確定在哪裏Show來自哪裏。

你可以試試Well.all而不是Show.all

+0

錯字...應該閱讀Well.all。在OP中進行了更正。 –