Menemukan jawabannya sendiri. Dengan awalan this.*
Saya bisa merujuk ke bidang. Dan saya bisa menggunakan fungsi JavaScript. MongoDB semakin keren!
Jadi inilah solusi saya:
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
Pembuatan stempel waktu di js berfungsi berbeda. Jadi saya harus membuang tiga angka terakhir dan membulatkannya. Jika ada yang tahu cara yang lebih elegan, beri tahu saya.
Satu-satunya masalah saya yang tersisa adalah, saya tidak dapat menyimpan Date
objek ke MongoDB. Itu selalu memberitahu saya bahwa saya harus menggunakan Time
. Saya rasa lebih baik saya mengupgrade mongoid ke 3.0.1.