Sam znalazłem odpowiedź. Z prefiksem this.*
Mogę odwołać się do pól. I potrafię używać funkcji JavaScript. MongoDB staje się coraz fajniejszy!
Oto moje rozwiązanie:
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
Tworzenie znacznika czasu w js działa inaczej. Musiałem więc pozbyć się ostatnich trzech liczb i zaokrąglić je. Jeśli ktoś zna bardziej elegancki sposób, daj mi znać.
Pozostał mi jedyny problem, że nie mogę zapisać Date
obiekt do MongoDB. Zawsze mówi mi, że muszę użyć Time
. Myślę, że lepiej uaktualnić mongoid do 3.0.1.