新手问题 请教一个 has_many 问题

stephen · 2012年11月10日 · 最后由 stephen 回复于 2012年11月10日 · 2205 次阅读

比如论坛帖子和文章,两个 model,

class Topic
   belongs_to :node
end

class Article
   belongs_to :node
end

他们都有 node,最简单的方法就是用两个 node,不同名字而已,不过这样设计好似不够简洁,

如果把帖子和文章两个各自的 node 都放在同一个 node 里面,然后用一个属性作为区别。

class Node
   field Classable #Topic or Article

   has_many :topics
   has_many :articles
end

这样 has_many 就出现问题了···而且这也不属于 Polymorphic Associations。那应该要怎么设计才好呢?

用单表继承

class Node < ActiveRecord::Base

end

class TopicNode < Node
  has_many :topics
end

class ArticleNode < Node
  has_many :articles
end
class Topic
   belongs_to :node
end

class Article
   belongs_to :node
end

class Node
   has_many :topics
   has_many :articles
end

没什么问题啊?

@Rei topic 的 node 和 a 的 node 是不一样的,就是一个 node 里面只能是 topic or article

#3 楼 @stephen 那可以用 #1 楼方法。

不过实际经验来说,这两种 Node 可能会慢慢变大,需要添加不同的字段,这样就干脆用两个 Model 两个表。

看楼主觉得它们的字段还会不会变了。

@miclle 谢谢 @Rei 说的也是,我考虑下!谢了!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号