Odpověď jsem našel sám. S předponou this.*
Mohu odkazovat na pole. A umím používat funkce JavaScriptu. MongoDB je stále chladnější!
Takže tady je moje řešení:
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
Vytvoření časového razítka v js funguje jinak. Musel jsem se tedy zbavit posledních tří čísel a zaokrouhlit je. Pokud někdo zná elegantnější způsob, dejte mi prosím vědět.
Můj jediný problém je, že nemohu uložit Date
protest proti MongoDB. Vždy mi to říká, že musím použít Time
. Myslím, že by bylo lepší upgradovat mongoid na 3.0.1.