ruby on rails 中的关联
Posted
技术标签:
【中文标题】ruby on rails 中的关联【英文标题】:Associations in ruby on rails 【发布时间】:2013-03-20 21:48:12 【问题描述】:我使用设备身份验证创建了一个用户。我还创建了文章视图、控制器和模型,其中模型具有 title
、body
和 article_id
等字段。现在我想实现 cmets(条件是只有登录用户才能评论文章)。我创建了一个is_admin
作为一个特殊用户,可以通过应用程序创建新文章。
用户表包含设备默认生成的所有字段。文章表具有 article_id
、title
和 body
等字段。用户和文章表之间仍然没有关联。评论表将有(根据我的理解)comment_id
和comment_body
。
预期关联:
class Comment < ActiveRecord::Base
belongs_to :article
belongs_to :user
我想确保只有登录用户才能评论文章,is_admin
用户可以创建新文章。
如何在用户、文章和评论表之间创建关联?我需要为用户和评论表创建关联吗?
【问题讨论】:
您的问题确实是一个非常基本的“Rails 是如何工作的?”问题。在向 *** 提出问题之前,我强烈建议您先阅读 Rails 教程或 guides.rubyonrails.org/association_basics.html 等文档。 【参考方案1】:建议通过rails指南和小博客了解@dpassage在评论中建议的关联。看来你已经有了解决办法,所以让我巩固一下。
如您所述,您将拥有三个模型:
第一:用户
class User
has_many :articles # not dependent => :destroy, may you not want to destroy article on deletion of user
has_many :comments, :dependent => :destroy
end
第二:文章
class Article
has_many :comments, :dependent => :destroy
belongs_to :user
end
第三:评论
class Comment
belongs_to :user
belongs_to :article
end
【讨论】:
以上是关于ruby on rails 中的关联的主要内容,如果未能解决你的问题,请参考以下文章
如何正确销毁 ruby on rails 中的关联记录?
为啥 Ruby on Rails 不使用 .includes() 加载我的关联对象?