Ruby on rails 在RubyonRails中处理注释

Ruby on rails 在RubyonRails中处理注释,ruby-on-rails,ruby,database-design,ruby-on-rails-4,Ruby On Rails,Ruby,Database Design,Ruby On Rails 4,目前,我正在制作一个简单的类似博客的应用程序,其中一个用户可以发表文章,其他几个用户可以对此发表评论 有没有办法让多态属性属于多个模型 比如说, 注释将始终有作者(用户模型) 然而,评论可以属于许多其他模式(帖子、期刊、文章等) 因此,对于(文章、期刊、文章)模型,多态关联是最好的。 然而,对于作者(或用户关系),多态性不起作用,因为多态性一次只能属于一个 有没有更好的办法 编辑: 这样做的优点/缺点是什么: class Comment < ActiveRecord::Base b

目前,我正在制作一个简单的类似博客的应用程序,其中一个用户可以发表文章,其他几个用户可以对此发表评论

有没有办法让多态属性属于多个模型

比如说,

注释将始终有作者(用户模型) 然而,评论可以属于许多其他模式(帖子、期刊、文章等)

因此,对于(文章、期刊、文章)模型,多态关联是最好的。 然而,对于作者(或用户关系),多态性不起作用,因为多态性一次只能属于一个

有没有更好的办法

编辑: 这样做的优点/缺点是什么:

class Comment < ActiveRecord::Base
    belongs_to :user
    belongs_to :commentable, :polymorphic => true
end
无需在控制器中手动保存用户id

    @comment.user_id = current_user.id

您既可以拥有
用户关系
也可以拥有表示与之关联的模型的多态关系。例如:

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :document, polymorphic: true
end

class Post < ActiveRecord::Base
  has_many :comments, as: :document
end

class Journal < ActiveRecord::Base
  has_many :comments, as: :document
end

class Article < ActiveRecord::Base
  has_many :comments, as: :document
end

class User < ActiveRecord::Base
  has_many :comments
end
class注释

现在,您可以调用
comment.user
来获取创建注释的人的
user
模型,以及
comment.document
来获取与注释相关联的
Post
Journal
Article

抱歉,您对my EDIT2有何看法?与使用
comment.user
comment.document
获取模型的方式类似,您还可以将它们分配为:
comment.user=current_user
comment.document=current_document
。当您保存注释时,它将正确地分配数据库中的
用户id
文档id
文档类型
列。不过,就优雅而言,您所做的一切都很好。
class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :document, polymorphic: true
end

class Post < ActiveRecord::Base
  has_many :comments, as: :document
end

class Journal < ActiveRecord::Base
  has_many :comments, as: :document
end

class Article < ActiveRecord::Base
  has_many :comments, as: :document
end

class User < ActiveRecord::Base
  has_many :comments
end