Zelf het antwoord gevonden. Met het voorvoegsel this.*
Ik kan verwijzen naar de velden. En ik kan JavaScript-functies gebruiken. MongoDB wordt cooler en cooler!
Dus hier is mijn oplossing:
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
Het maken van een tijdstempel in js werkt anders. Dus ik moest de laatste drie cijfers weglaten en ze afronden. Als iemand een elegantere manier weet, laat het me dan weten.
Het enige probleem dat ik nog heb, is dat ik geen Date
kan opslaan bezwaar tegen MongoDB. Het vertelt me altijd dat ik Time
. moet gebruiken . Ik denk dat ik mongoid beter kan upgraden naar 3.0.1.