Rails 4虚拟记录(不是虚拟属性) - 可能吗?

时间:2016-06-09 16:59:52

标签: ruby-on-rails-4 activerecord

我正在为我的rails应用程序实现一个基本的标记功能,我希望有两种标记:

  • 一般类型(即用户Greg被标记为"非常棒"通过belongs_tohas_many之间的基本User / Tag关系{1}}模特)
  • 一个"虚拟" 标记类型,基于另一个模型中记录的存在(即Greg通过以下方式购买了Widget X belongs_tohas_many模型之间的User / Purchase关系。

我希望能够查询user.tags并获取用户的标记类型(基本和虚拟)。如果用户购买了某些东西,我希望user.tags产生一个"虚拟"该购买的标签(理想情况下基于与普通标签相同的类)。

这可能吗?

1 个答案:

答案 0 :(得分:0)

所以我尝试这样做的动机是保持我的数据库规范化(即不在两个地方存储相同的信息)。

然而,我开始意识到在现实世界中,有时牺牲一些规范化以获得更好的性能和降低复杂性是有意义的。

所以我最终做的是保持这些特殊的标签模型"同步"通过模型回调和dependent: destroy关系,在应用程序的其他地方使用各种对应模型。