首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个有效的方法来存储每月循环数据,而不是频繁变化?

一个有效的方法来存储每月循环数据,而不是频繁变化?
EN

Stack Overflow用户
提问于 2016-04-05 11:46:51
回答 2查看 84关注 0票数 0

我正在努力寻找一种有效的方法来存储每月重复的数据,而这些数据不会经常更改。

代码语言:javascript
复制
class Fund < ApplicationRecord
  has_many :factsheets
end

class Factsheet < ApplicationRecord
  belongs_to :fund
end

A基金每月将有一个新的概况介绍。

每个概况介绍都有一个目标(假设很长的文本)。

目标可能是每月改变,但不经常改变(比方说,每10个月变化一次)。

有什么好办法来保存目标吗?

选项1:

把目标放在模型概况中,就会有很多重复。

(将12个目标存储12个月,但大多数目标可能完全相同)

备选方案2:

建立目标模型,然后建立has_many :objectives基金

代码语言:javascript
复制
class Objective < ApplicationRecord
  belongs_to :fund
end

目标将有一栏:effective_on,以表明:从哪个月起,基金应在其概况介绍中使用这一客观记录。

(存储2个目标12个月,如果只更改一次)

选项3:

更好的主意?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-05 12:13:55

在你的情况下,我会做最简单的选择,这是第一个。

现在为什么?我的动机是规模。在我看来,备选方案2是过度工程的常见情况。您将在100年中的一个表上大约有1200个记录,并且为了这样的论点,假设目标永远不会改变:您将在DB中得到1200个重复的条目。

这是件大事吗?我不这么认为。就这个规模而言,我认为有点重复是完全可以容忍的。

如果您每秒钟创建一个条目,我们可以为一个更好的解决方案而争论,但我建议您使用最简单的解决方案,集中精力解决一个确实需要一些精心设计的解决方案的问题:)。

票数 0
EN

Stack Overflow用户

发布于 2016-04-06 04:21:16

我会选择选择2..。因为正如你解释的那样,这就是现实世界中的真正关系。“基金has_many :objectives”的措辞要求目标成为模型。这样做也适应了未来的灵活性.也许目标可以属于其他模式?

如果您使用选项2,那么您可以做一些类似Fund.last.objectives的事情,并看到最后一个基金的所有目标,而第一个解决方案不容易允许这样的灵活性.你得去做Fund.where('created_at > ?', Time.now.beginning_of_year).pluck(:objective) ..。第二种选择要干净得多,当然不是“超越工程”的任何东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36425524

复制
相关文章

相似问题

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