Ruby on rails模型与多个父母

Nol*_*nDC 3 ruby activerecord ruby-on-rails

在我的Rails应用程序中,我有两个模型,文章和项目,它们都与用户相关联.我想为每个模型添加注释.构建这个的最佳方法是什么?

这是我目前的设置:

class Comment < ActiveRecord::Base
  belongs_to :article
  belongs_to :project
end

class Article < ActiveRecord::Base
  belongs_to :user
  has_many :comments
end

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :comments
end

class User < ActiveRecord::Base
  has_many :articles
  has_many :projects
  has_many :comments, :through => :articles
  has_many :comments, :through => :projects
end 
Run Code Online (Sandbox Code Playgroud)

这是处理结构的正确方法吗?如果是这样,我如何管理CommentsController,如果它是通过文章创建的,则为article_id;如果是通过项目创建的,则为project_id?我应该设置特殊路线吗?

最后一条评论:评论并不总是需要有用户.因为这对我的网站来说,我希望匿名观众能够发表评论.这是一项微不足道的任务吗?

Sim*_*tti 5

制作Comment一个多态模型.然后创建一个多态关联.

这是一个来自Rails wiki 的多态关系的例子,这里是来自截屏男子Ryan Bates 的Railscast.