【问题标题】:rails create a caching tablerails 创建一个缓存表
【发布时间】:2015-02-20 21:54:53
【问题描述】:

我需要在我的数据库中生成一个新表,该表从各种模型中提取以以特定方式存储数据。涉及的模型和关系是:

Club  :has_many users
User :has_many posts, :has_many comments

现在我需要以下列(我希望这些名称具有足够的描述性):

  • 俱乐部名称
  • 日期
  • NumUsersCreatedBeforeDate
  • NumPostsByUsersBelongingToCurrentClubBeforeDate
  • NumCommentsByUsersBelongingToCurrentClubBeforeDate

因此,每个俱乐部在每个日期都会有一个新行,3 个长命名列中的数字将是累积总数。这意味着,如果我有 1000 个俱乐部,并且应用程序已经运行了 30 天,我将有 30,000 行,每个日期每个俱乐部一个。

我有一种感觉,这一切都不能通过一个生成迁移命令来完成,我必须专门为此目的生成一个模型。建这个表有什么建议吗?

【问题讨论】:

  • 你有什么理由要缓存这个吗?所有这些列都可以通过 sql 查询来完成。除非您将其全部显示在您的应用程序中,否则我会立即执行此操作。最好有一个模型,并且似乎每天都有 cron 工作来创建它们。
  • 它用于显示整体统计信息的管理页面(我已经在我自己的管理页面中使用了活动管理员,这应该是一个单独且功能最少的管理页面)。我已经走了新的模型路线,并且正在制定一项 rake 任务以每天更新一次表格。
  • 听起来你已经把它整理好了。我唯一的建议是让它属于一个俱乐部,而不是存储俱乐部名称。如果他们更改俱乐部的名称怎么办?

标签: ruby-on-rails caching ruby-on-rails-4 database-design


【解决方案1】:

是的,最好的方法是为此特定目的创建一个新模型,并创建一个 rake 任务,该任务在应用程序运行的每一天进行迭代,以每天在表格中填充 1000 行(每个俱乐部一个) ,然后通过为新的一天填充另外 1000 行来继续每天更新。

【讨论】:

    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多