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