1

我有一個模型與數組列。所以我基本上把語言作爲一個數組保存到Postgres中。例如,driver_language =["English", "Spanish", "French"]紅寶石軌道搜索陣列(有效記錄)

在我的查詢中,我想選擇驅動程序語言中包含submitted_driver_language ["English", "Spanish"]的所有車輛。或者,提交的driver_language數組中至少有一個元素包含在作爲數組的driver_language列中。我如何將該條件添加到下面的查詢中?任何幫助將不勝感激

Vehicle.where(:vehicle_type => vehicle_type, :active => true, :company_activated => true, :capacity => number_of_people.to_i..Float::INFINITY) 
+1

你存儲的語言爲[PostgreSQL的數組(http://www.postgresql.org/docs/9.1/static/arrays.html),或者只是在你的數據庫中的字符串。你不規範你的數據,創建一個語言表並使用'has_and_belongs_to_many'關聯? – spickermann

回答

0

使用arel_table。

@vehicle = Vehicle.where(:vehicle_type => vehicle_type, :active => true, :company_activated => true, :capacity => number_of_people.to_i..Float::INFINITY) 

avehicle = @vehicle.arel_table 

@required_result = @vehicle.where(avehicle[:driver_language].matches('%#{"English", "Spanish"}%')) 
0

那麼正則表達式呢?

Vehicle.where('driver_language ~* ?', 'english|spanish')