我必须定义一个似乎不太适合"has_one / belongs_to“桶的关联。
情况是这样的,我有一个表,其中每一行都对应于给定月份和年份的月度统计数据。我很希望能够在我的模型上定义某些关联,比如record.prior_month或record.prior_year,它们将对应于当前记录的前一个月/年。
我想不出任何聪明的方法来做到这一点,因为维护外键是没有任何意义的,因为必须每月更新大量记录。
我总是可以处理控制器中的逻辑,但如果可以的话,我更喜欢将其与模型一起保留。
谢谢!麦克
发布于 2011-03-10 04:32:32
因此,不要存储月份/年份,还要存储Month+Year*12。
这样,您就知道下个月是21436,您可以轻松地对记录进行分页。
TrafficGroup.order("month_calculated").paginate(:page=>params[:page])发布于 2011-03-10 04:32:34
像这样的东西?
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发布于 2011-03-10 04:33:40
您可以通过以下几种方法来完成此操作。假设月份存储在模型中。
我最喜欢的是scopes,因为它可以很好地与其他关联一起使用。
例如,您可以这样做:
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
endhttps://stackoverflow.com/questions/5251678
复制相似问题