2015-09-20 24 views
0

我正在使用where語句來拉動幾條記錄。條件有多遠?

目前,它看起來像這樣:

humans.where("? <= created_at AND created_at <= ?", value.days.ago.beginning_of_day, value.days.ago.end_of_day) 

我不知道到哪兒,我可以這樣擴展它沒有它是無效的:

humans.where("? <= created_at AND created_at <= ? AND subscribed = ? AND provider != ?", value.days.ago.beginning_of_day, value.days.ago.end_of_day, true, 'twitter') 

請問這個還能用嗎?像這個Postgres兼容性的查詢?

+1

你試過了嗎? – lukad

回答

0

在查詢中添加另一個AND子句是完全正確的。這應該工作。我喜歡的軌道語法所以我的部分分開,我可以使用軌道語法到一個單獨的部分:

humans.where("? <= created_at AND ....", value.days.ago.beginning_of_day, true, 'twitter') 
     .where(subscribed: value.days.ago.end_of_day) 

事實上,如果你喜歡的語法,你可以更你的查詢轉換爲它(約樣那):

humans.where(Human.arel_table[:created_at].gteq(value.days.ago.beginning_of_day)) 
     .where(Human.arel_table[:subscribed].lteq(value.days.ago.end_of_day)) 
     .where(subscribed: true) 
     .where(provider: 'twitter') 
+0

優秀的伴侶,保持乾淨!任何想法,如果這些查詢是postgres兼容? –

+0

我一直在使用這些查詢和postgres。 – davidrac