2013-03-10 50 views
0

我有一個名爲Listing的模型,代表了公寓轉租的列表。這些轉租可以出租不同的條款(夏季,冬季等)。所以,每個轉租的期限都是作爲一個序列化的字符串存儲的。 (我知道這不是最好的方式,但我試圖讓這個應用程序)我爲這些列表創建一個過濾器函數,因此用戶可以選擇他們想要在列表中的屬性,並顯示匹配過濾器的結果。然而,我遇到了問題部分。用戶可以檢查他們希望列表可用的條款,因此它也存儲在序列化數組中。使用Rails的ORM我該怎麼辦Rails查詢數組屬性包含與其他數組重疊的位置

listing=listing.where("term contains value(s) from input term") 

基本上我想這其中用戶的首選術語具有與上市方面ATLEAST一個重疊返回列表。

即,如果一上市就夏季會議1和冬季的條件和用戶選擇夏季會議1和春季,即上市應返回。

任何人有什麼想法?

回答

0

這是你在找什麼:

listings = Listing.where('term in (?)', terms) 

,或者你可以這樣做:

listings = Listing.where(:term => terms) 
+0

返回的ActiveRecord :: StatementInvalid在過濾器#顯示的SQLite3 ::的SQLException:沒有這樣的表:夏天1:SELECT COUNT(*)FROM「listings」WHERE「listings」。「furnished」='t'AND「listings」。「negotiable」='t'AND「listings」。「utilities」='t'AND 「listings」。「air_conditioning」='t'和「列表」。「parking」='f'和「列表」。「washer_dryer」='t'和「列表」。「private_bathroom」='f'AND .price <= 700.0)AND(在夏季1) – 2013-03-10 05:49:54

+0

問題是最終的,並測試當我檢查了夏天1 – 2013-03-10 05:50:40

+0

我已經更新了答案(有一個語法錯誤)。再試一次。 – gylaz 2013-03-10 05:55:59