📅  最后修改于: 2023-12-03 14:46:53.989000             🧑  作者: Mango
本文将介绍 Rails 中的 belongs_to
关系以及如何使用它来关联两个模型。
belongs_to
表示一个模型对象属于另外一个模型对象。可以理解为子模型依赖于父模型。比如一个 Comment
模型可能会 belongs_to
于一个 Post
模型,表示这个评论属于某篇文章。
首先,需要在模型文件中添加 belongs_to
关系。例如,在 Comment
模型中添加以下代码:
class Comment < ApplicationRecord
belongs_to :post
end
这里的 :post
表示这个评论属于某篇文章,需要和 Post
模型建立关联。
接下来,需要在数据库表中添加一个外键,用于连接两个模型。这个外键的格式是 modelname_id
,例如上面的例子中 comments
表中需要添加 post_id
字段。
class AddPostIdToComments < ActiveRecord::Migration[6.0]
def change
add_column :comments, :post_id, :integer
end
end
最后,可以通过以下方式关联两个模型:
post = Post.find(1)
comment = post.comments.create(body: "这是一条评论")
这里的 post.comments
表示从 Post
模型中获取到了这个文章的所有评论,然后通过 create
方法创建一条新的评论,并和这篇文章关联起来。
belongs_to
关系默认是必需的(required: true
),如果不添加 optional: true
,当没有关联对象时会抛出异常。belongs_to
关系可以通过 inverse_of
选项设置反向关系,避免触发不必要的数据库查询。belongs_to
关系同时创建了一个关联对象,可以通过 autosave
选项控制是否自动保存关联对象。以上就是 Rails 中使用 belongs_to
关系的基本介绍。希望对你有所帮助!