在我的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
这是处理结构的正确方法吗?如果是这样,我如何管理CommentsController,如果它是通过文章创建的,则为article_id;如果是通过项目创建的,则为project_id?我应该设置特殊路线吗?
最后一条评论:评论并不总是需要有用户。因为这对我的网站来说,我希望匿名观众能够发表评论。这是一项微不足道的任务吗?
答案 0 :(得分:5)
使Comment
成为多态模型。然后创建一个多态关联。
以下是来自Rails wiki的polymorphic relationship示例,此处是来自截屏广播员Ryan Bates的Railscast。
答案 1 :(得分:1)
您可以查看 - acts_as_commentable插件http://github.com/jackdempsey/acts_as_commentable/tree/master
或者你可以继续进行多态关系
答案 2 :(得分:-1)
你可以让ArticleComment
和ProjectComment
具有相似的结构但是分开存储,然后创建一个返回两种评论类型的方法。