1

使用 SQLite 运行 Rails 3.2.8(来自 ruby​​onrails.org 上当前 dl 的基本设置)

如果我有几个模型我想要一个“notes”属性并且所有“notes”都是字符串,是否应该只有一个特定的 Note 模型,所有其他模型都引用 Note 模型?

或者

每个模型都必须有自己的“注释”属性吗?

如果是第一个响应,这是否意味着对于引用“注释”的每个关系,我是否需要创建另一个定义该:through关系的类?(即 tableOne、tableTwo 和 tableThree 都是参考笔记,那么我需要创建额外的类 tableOne_notes、tableTwo_notes 和 tableThree_notes)

多态解决方案是否适用?

4

2 回答 2

3

如果您想要一个可以为许多其他模型提供相同目的的“笔记”模型,这将是一种多态关系。无论应用程序框架如何,这实际上都是正确的。

在此示例的多态关系的 rails 实现的特定情况下,您将添加一个

note_type 

注释模型/表和注释模型中的列,使用数据库迁移加上:

belongs_to :notable, :polymorphic => true  

Note然后

has_many notes, :as => notable` 

在需要注释的其他模型中。

有关更多信息,请参见http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

多态关系的常见用途:

  • 笔记(如您所用)
  • 更新信息(时间戳、IP 地址、用户代理等)
  • 属于简单键值查找的类别
于 2012-12-07T22:01:10.493 回答
0

这取决于您的需求。但基本上可以创建一个模型Notice1-nNoticeandOtherOther2...

据我了解,您的问题只有一个1-n或多个1-n关系才有意义。如果您在每个表中添加一列notes,则每个数据行只能是一个注释。另一个定义:through的类不是1-n关系所必需的。

于 2012-12-07T20:59:49.390 回答