这是数据库的正确方法吗?

时间:2010-05-28 14:40:16

标签: ruby-on-rails database-design

我对数据库有一些问题。

好的,我有两个型号 - > PageItem。 用于显示某些内容的页面。 Item - >这是项目描述。

因此,我致力于小型电子商务shop

好的,所有这些模型都可以有一些评论。

所以,这是我此时的评论模型:

评论 - >

string : id
text : body
integer : page_id
integer : item_id

所以当有人向页面添加评论时 - > page_id将填充当前页面ID。

如果有人在项目中添加评论 - > item_id将被填充。

好的,我知道创建STIPolymorphic assoc的最佳方式是什么,但我是否真的需要这种方式来处理我的情况?

抱歉我的英语不好,我来自俄罗斯。=)

1 个答案:

答案 0 :(得分:1)

虽然您的表和模型的工作方式适合您,但您应该考虑使用polymorphic。你没有 来使用它,但我相信这是最推荐的方式。

要使用polymorphic associations,您需要更改模型:

class Comment < ActiveRecord::Base
   belongs_to :commentable, :polymorphic => true
end

class Item < ActiveRecord::Base
   has_many :comments, :as => :commentable
end

class Page < ActiveRecord::Base
   has_many :comments, :as => :commentable
end

和您的comments表格,现在将包含此列:

integer : id # should be integer, not string
text    : body
integer : commentable_id
string  : commentable_type 

希望它有所帮助...