我在 FrozenRecord 表中添加了一個新的時間戳欄位。當我嘗試時,
TableName.where("expires_at < ?", Time.now)
這是我收到的錯誤訊息。鏈接到repo中的行
ArgumentError:來自 /Users/preethikumar/.gem/ruby/3.1.2/gems/frozen_record-0.26.2/lib/frozen_record/scope.rb:105:in 的引數數量錯誤(給定 2,預期 0..1) `哪里'
如何查詢帶有時間戳的欄位?
uj5u.com熱心網友回復:
錯誤資訊:
因為這個 gemwhere
只需要一個引數criterias
,而且它似乎需要符號:chain
或 Hash (或其他回應map
并產生的物件key, value
)。
gem Docs將“支持的查詢介面”顯示為where(region: 'Europe')
.
值得注意的是,它沒有說支持 ActiveRecord 查詢介面。
此外,它繼續顯示“不支持的查詢介面”,例如where('region = "Europe" AND language != "English"')
.
建議的解決方案:
如何查詢帶有時間戳的欄位?
雖然這個 gem 似乎不支持小于(大于)作為自然 DSL 的一部分,但在您的特定實體中,您應該能夠使用無開始的獨占范圍而不是使用CoverMatcher
例如
TableName.where(expires_at: ...Time.now)
CoverMatcher#match?
只是使用@value.cover?(other)
,所以這應該通過 ruby?? 產生所需的結果Range#cover?
。例如:
t = Time.now
r = ...t
r.cover?(t)
#=> false
r.cover?(t - 1)
#=> true
r.cover?(t 1)
#=> false
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/507587.html