2016-02-05 76 views
1

我在我的rails項目中查詢時一直在使用以下語法。如何使用或在軌道哈希查詢

Table.where({ fld_1: "val_1", fld_2: "val_2" }) 

將生成的SQL語句

SELECT * FROM tables WHERE fld_1 = 'val_1' AND fld_2 = 'val_2' 

不過,我想用沒有有條件opoerator進行查詢。 防爆SELECT * FROM tables WHERE fld_1 = 'val_1' or fld_2 = 'val_2'

我可以用這個查詢

Table.where(["fld_1 = ? and fld_2 = ?", "val_1", "val_2"]) 

實現它,但我怎麼能使用查詢的哈希風格實現它。

回答

0

根據Rails documentation on Hash querying

只有平等,範圍和子集檢查是可能的哈希條件。

所以,你最好的選擇是跳過哈希和使用數組像你提到的:

Table.where('fld_1= ? OR fld_2= ?', 'val_1', 'val_2') 

幸運的是,or條件類似於你正在尋找will be coming in Rails 5which has been backported to Rails 4.2.2)什麼。當它出來後,你將能夠寫下你這樣的查詢:

Table.where(fld_1: 'val_1').or.where(fld_2: 'val_2')