Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否有一种有效的方法来存储不经常更改的每月定期数据?_Sql_Ruby On Rails_Activerecord_Recurring Events - Fatal编程技术网

Sql 是否有一种有效的方法来存储不经常更改的每月定期数据?

Sql 是否有一种有效的方法来存储不经常更改的每月定期数据?,sql,ruby-on-rails,activerecord,recurring-events,Sql,Ruby On Rails,Activerecord,Recurring Events,我正试图找到一种有效的方法来存储每月不经常更改的重复数据 class Fund < ApplicationRecord has_many :factsheets end class Factsheet < ApplicationRecord belongs_to :fund end 目标将有一列:effective_on,表明:从哪个月起,基金应在其情况说明书上使用该目标记录。 (如果仅更改一次,则将2个目标存储12个月) 选项3: 更好的主意?对于你的情况,我会选择最

我正试图找到一种有效的方法来存储每月不经常更改的重复数据

class Fund < ApplicationRecord
  has_many :factsheets
end

class Factsheet < ApplicationRecord
  belongs_to :fund
end
目标将有一列
:effective_on
,表明:从哪个月起,基金应在其情况说明书上使用该目标记录。
(如果仅更改一次,则将2个目标存储12个月)

选项3:


更好的主意?

对于你的情况,我会选择最简单的方案,这是第一个

现在为什么?我的动机是规模。在我看来,方案2是过度设计的常见情况。在100年内,一张表上大约有1200条记录,为了论证,让我们假设目标从未改变:数据库中会有1200条重复的条目

这有什么大不了的吗?我想不是。对于这种规模,我认为有点重复是完全可以容忍的


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

我会选择选项2。。。因为这是真实世界中的真实关系,正如你所解释的。“一只基金有许多:目标”的说法要求目标成为一种模式。这样做也适应了未来的灵活性。。。也许目标可以属于其他模型

如果使用选项2,则可以执行类似于
Fund.last.objectives
的操作,查看最后一个基金的所有目标,而第一个解决方案不容易实现这种灵活性。。。你必须做
Fund.where('created_at>?',Time.now.年初)。pull(:objective)
。。。。第二种选择要干净得多,当然也不是“过度工程”

class Objective < ApplicationRecord
  belongs_to :fund
end