ruby on rails 中的关联

Posted

技术标签:

【中文标题】ruby on rails 中的关联【英文标题】:Associations in ruby on rails 【发布时间】:2013-03-20 21:48:12 【问题描述】:

我使用设备身份验证创建了一个用户。我还创建了文章视图、控制器和模型,其中模型具有 titlebodyarticle_id 等字段。现在我想实现 cmets(条件是只有登录用户才能评论文章)。我创建了一个is_admin 作为一个特殊用户,可以通过应用程序创建新文章。

用户表包含设备默认生成的所有字段。文章表具有 article_idtitlebody 等字段。用户和文章表之间仍然没有关联。评论表将有(根据我的理解)comment_idcomment_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 中的关联记录?

为啥 Ruby on Rails 不使用 .includes() 加载我的关联对象?

与Ruby on Rails中的范围相关联

Ruby on Rails: :include 与子模型的多态关联

ruby on rails (模型关联查询)