Ho trovato la risposta da solo. Con il prefisso this.*
Posso fare riferimento ai campi. E posso usare le funzioni JavaScript. MongoDB diventa sempre più fresco!
Quindi ecco la mia soluzione:
class Invoice
include Mongoid::Document
field :invoice_date, :type => Date
field :days_for_payment, :type => Integer
...
scope :overdue, where("(Math.round(this.invoice_date.getTime() / 1000) + (this.days_for_payment * 24 * 3600)) < #{Time.now.to_i}")
...
end
La creazione di timestamp in js funziona in modo diverso. Quindi ho dovuto eliminare gli ultimi tre numeri e arrotondarli. Se qualcuno conosce un modo più elegante, per favore me lo faccia sapere.
Il mio unico problema rimasto è che non riesco a memorizzare una Date
opporsi a MongoDB. Mi dice sempre che devo usare Time
. Penso che sia meglio aggiornare mongoid alla 3.0.1.