Rails - 许多其他人可以使用的模型?

时间:2012-12-07 20:52:18

标签: ruby-on-rails ruby-on-rails-3 sqlite ruby-on-rails-3.1 models

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

如果我有几个模型,我想要一个属性为“notes”,所有“notes”都是String,那么是否只有一个特定的Note模型,所有其他模型都引用了Note模型?

每个模型是否必须为“注释”设置自己的属性?

如果第一个响应,这是否意味着对于引用“注释”的每个关系,我是否需要创建另一个定义:through关系的类? (即tableOne,tableTwo和tableThree所有引用注释,然后我需要创建其他类tableOne_notes,tableTwo_notes和tableThree_notes)

多态解决方案是否适用?

2 个答案:

答案 0 :(得分:3)

如果你想要一个'notes'模型可以为许多其他模型提供相同的目的,那么这将是一种多态关系。 无论应用程序框架如何,这都是正确的。

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

note_type 
Notes模型/表和Note模型中的

列,使用数据库迁移加上:

belongs_to :notable, :polymorphic => true  

Note中,然后

has_many notes, :as => notable` 

在其他需要笔记的模型中。

有关详情,请参阅http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

频繁使用多态关系:

  • 备注(正如您所用)
  • 更新信息(时间戳,IP地址,用户代理等)
  • 简单键值查找的类别

答案 1 :(得分:0)

这取决于您的需求。但基本上可以创建模型Notice并在1-nNotice以及Other之间创建Other2关系......

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