2012-01-05 43 views
0

下面的查詢不起作用符號,它不斷給人一種奇怪的錯誤: 鍵必須是字符串或符號紅寶石 - Mongoid - 無法查詢日期範圍,錯誤:密鑰必須是字符串或

Session.where(:created_at.gte => (Date.today - 30), :created_at.lte => (Date.today).first 

下面是查詢的內容,當我檢查它:

:::::::::::::::::: # selector: {#=>Wed, 04 Jan 2012, #=>Thu, 05 Jan 2012}, 
options: {}, 
class: Session, 
embedded: false> 
:::::::::::::::::: # selector: {#=>Wed, 04 Jan 2012, #=>Thu, 05 Jan 2012}, 
options: {}, 
class: Session, 
embedded: false> 
:::::::::::::::::: # selector: {#=>Wed, 04 Jan 2012, #=>Thu, 05 Jan 2012}, 
options: {}, 
class: Session, 
embedded: false> 

什麼我可能是做錯了或做mongoid有一個bug任何想法?

+0

支持你試過Date對象明確地轉換爲字符串? – kclair 2012-01-06 00:01:01

+0

是的,可惜它不起作用......謝謝。 – Emanuel 2012-01-13 01:25:57

回答

0

我與gem的開發者交談過,他說它支持rails 3.1 + 此外,我們通過使用不同的語法(類似於javascript)來完成這項工作。

scope :between, ->(from, to){ where(:created_at => {'$gte' => Time.parse(from.to_s)}).and(:created_at => {'$lte' => Time.parse((to + 1.day).to_s) - 1.second }) } 

而事實證明,這是在軌道3.0