关于数据复制/规范化(建模)的一般问题

时间:2011-08-17 00:27:01

标签: ruby-on-rails database model-view-controller

我有以下关系:

  • Foo has_one Bar
  • Bar has_many Baz
  • Foo has_many Baz through Bar

现在我的问题:我需要使用Foo.Baz,但信息应该冻结/静态。

我的意思是,每当Bar.Baz发生变化时,我都不希望Foo.Baz发生变化。

实质上,Foo.Baz是某种日志记录,用于在Baz创建时描述Foo

我如何最好地处理这种情况?

我的第一个倾向是在FooBaz之间创建另一种关系,但这会增加大量冗余数据,因为Bar.Baz只会偶尔发生变化。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

你可以保留它,然后根据时间戳创建一些范围来获取Foo.Baz,而不允许更新Bar.Baz,只是创建。所以要获得Foo.Baz,你会得到最新的

Bar.Baz when Bar.Foo == foo and Bar.baz.created_at < Foo.created_at.

我意识到这不是一个很好的解决方案,但它可能是一个起点...