2012-06-06 97 views
1

我與一些市數據的工作,並且它的事實,一些城市在技術上多個縣,這是我在數據庫處理爲一個數組,像這樣內複雜:Ruby:如何返回數組列中包含給定字符串的所有行?

[<Municipality id: 11590, name: "Wisconsin Dells", county: ["Adams", "Columbia", "Juneau", "Sauk"], latitude: nil, longitude: nil, created_at: "2012-06-06 20:05:20", updated_at: "2012-06-06 20:05:20", municipality_type: "City">] 

我如何構建撥打在Ruby這將返回所有的城市county包含給定的字符串?

理想情況下,例如,我將列出某個縣的所有城市。

編輯:我有serialize :county在我的Municipality類。

+0

你問如何做到這一點的紅寶石,但你在Rails的是什麼意思?或者你想要一個純粹的Ruby解決方案? –

+0

我想我更喜歡純Ruby ......但Rails方法會很好。我只是不想被搞亂SQL。 – jasonmklug

+0

@jsonmklug - 但重新閱讀後...這是一個Rails的ActiveModel類,對吧?而且你希望能夠調用'Municipality.for_county(「哥倫比亞」)'並且讓它返回所有匹配的市政府,對吧? –

回答

2
class Muni < ActiveRecord::Base 
    def self.for_county(county) 
    where %Q[county like '%"#{county}"%'] 
    end 
end 

或者慢一些,但是如果你「只是不想與SQL搞亂」:

def self.for_county(county) 
    all.select { |m| m.county.include? county } 
end 
+0

你爲什麼需要第二個'select'?和'where'(「like like?」,'%'#{縣}「%')' – fl00r

+0

如果你正在尋找縣」foo「,還有另一個縣叫做」foobar「 - 那麼SQL會匹配它,但是ruby'select'會將其過濾掉。 – Emily

+0

你可以用引號搜索,不是嗎? – fl00r

相關問題