首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有外键的流量数据的Rails 3关联

没有外键的流量数据的Rails 3关联
EN

Stack Overflow用户
提问于 2011-03-10 04:21:27
回答 3查看 155关注 0票数 0

我必须定义一个似乎不太适合"has_one / belongs_to“桶的关联。

情况是这样的,我有一个表,其中每一行都对应于给定月份和年份的月度统计数据。我很希望能够在我的模型上定义某些关联,比如record.prior_monthrecord.prior_year,它们将对应于当前记录的前一个月/年。

我想不出任何聪明的方法来做到这一点,因为维护外键是没有任何意义的,因为必须每月更新大量记录。

我总是可以处理控制器中的逻辑,但如果可以的话,我更喜欢将其与模型一起保留。

谢谢!麦克

EN

回答 3

Stack Overflow用户

发布于 2011-03-10 04:32:32

因此,不要存储月份/年份,还要存储Month+Year*12。

这样,您就知道下个月是21436,您可以轻松地对记录进行分页。

代码语言:javascript
复制
TrafficGroup.order("month_calculated").paginate(:page=>params[:page])
票数 0
EN

Stack Overflow用户

发布于 2011-03-10 04:32:34

像这样的东西?

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2011-03-10 04:33:40

您可以通过以下几种方法来完成此操作。假设月份存储在模型中。

我最喜欢的是scopes,因为它可以很好地与其他关联一起使用。

例如,您可以这样做:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5251678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档