我必须很好地定义一个似乎不适合“has_one / belongs_to”存储桶的关联。
情况就是这样,我有一张表,每行对应一个特定月份和年份的月度统计数据。我希望能够在我的模型上定义某些关联,例如record.prior_month
或record.prior_year
,这些关联将对应于当前记录的前一个月/年。
我想不出任何聪明的方法来做到这一点,因为维护每月必须更新大量记录的外键没有任何意义。
我可以随时处理控制器中的逻辑,但如果可以的话,我更愿意将其保留在模型中。
谢谢! 麦克
答案 0 :(得分:0)
因此,不是存储月份/年份,而是存储月份+年份* 12。所以2011年3月是24135
这样,您知道下个月是21436,您可以轻松地对您的记录进行分页。
TrafficGroup.order("month_calculated").paginate(:page=>params[:page])
答案 1 :(得分:0)
这样的东西?
class MyModel < AR::Base
def prior_month
created_at.month
end
def prior_year
created_at.year
end
end
example = MyModel.last
example.prior_year
#=> 2010
example.prior_month
#=> 3
答案 2 :(得分:0)
你可以通过几种方式做到这一点。假设月份存储在模型中。
我最喜欢的是范围,因为它可以很好地与其他协会合作。
例如,你可以这样做:
class TrafficRecord < ActiveRecord::Base
scope :only_month, lambda {|month| where :month => month} # this should also contain join conditions
def prior_month
self.class.only_month(self.month - 1) #decrement your month
end
end