Tự mình tìm ra câu trả lời. Với tiền tố this.*
Tôi có thể tham khảo các lĩnh vực. Và tôi có thể sử dụng các hàm JavaScript. MongoDB ngày càng mát hơn!
Vì vậy, đây là giải pháp của tôi:
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
Tạo dấu thời gian trong js hoạt động khác nhau. Vì vậy, tôi phải loại bỏ ba số cuối cùng và làm tròn chúng. Nếu ai biết cách khác hay hơn, vui lòng cho tôi biết.
Vấn đề duy nhất còn lại của tôi là tôi không thể lưu trữ Date
phản đối MongoDB. Nó luôn cho tôi biết tôi phải sử dụng Time
. Tôi nghĩ tốt hơn nên nâng cấp mongoid lên 3.0.1.