小编典典

在 Rails 中使用 user_id:integer 与 user:references 生成模型

all

我对如何生成一个属于另一个模型的模型感到困惑。我的书使用这种语法将 Micropost 与用户相关联:

rails generate model Micropost user_id:integer

但是https://guides.rubyonrails.org/active_record_migrations.html#creating-a-
standalone-
migration说要这样做:

rails generate model Micropost user:references

这两个产生的迁移是不同的。另外,对于前者,rails 怎么知道这user_id是一个外键引用user?谢谢!


阅读 99

收藏
2022-07-06

共1个答案

小编典典

运行迁移时,两者都将生成相同的列。在 rails 控制台中,您可以看到是这样的:

:001 > Micropost
=> Micropost(id: integer, user_id: integer, created_at: datetime, updated_at: datetime)

第二个命令belongs_to :user在您的 Micropost 模型中添加关系,而第一个命令没有。指定此关系后,ActiveRecord
将假定外键保存在user_id列中,并将使用命名模型User来实例化特定用户。

第二个命令还在新user_id列上添加索引。

2022-07-06