我做了一件可怕的事...
我有一个包含帐户余额的表。它具有 account_id、金额和 month_end 日期的属性。我想在该表中查询过去十二个月的余额。但一定有比这更好的方法。
scope :recent_balances, lambda { { :conditions =>
["month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ? OR month_end = ?",
last_month_end.to_s,
(last_month_end-1.month).end_of_month.to_s,
(last_month_end-2.month).end_of_month.to_s,
(last_month_end-3.month).end_of_month.to_s,
(last_month_end-4.month).end_of_month.to_s,
(last_month_end-5.month).end_of_month.to_s,
(last_month_end-6.month).end_of_month.to_s,
(last_month_end-7.month).end_of_month.to_s,
(last_month_end-8.month).end_of_month.to_s,
(last_month_end-9.month).end_of_month.to_s,
(last_month_end-10.month).end_of_month.to_s,
(last_month_end-11.month).end_of_month.to_s ] } }
private
def self.last_month_end
last_month_end ||= (Date.today - 1.month).end_of_month
end
我的问题是:
- 执行此查询的聪明方法是什么?(这不可能是我刚刚想出的。)
- 如何修改此查询以使其更灵活?我希望能够将特定月数传递给查询(例如查询六个月的余额或 24 个月的余额)