我对如何生成一个属于另一个模型的模型感到困惑。我的书使用这种语法将 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?谢谢!
user_id
user
运行迁移时,两者都将生成相同的列。在 rails 控制台中,您可以看到是这样的:
:001 > Micropost => Micropost(id: integer, user_id: integer, created_at: datetime, updated_at: datetime)
第二个命令belongs_to :user在您的 Micropost 模型中添加关系,而第一个命令没有。指定此关系后,ActiveRecord 将假定外键保存在user_id列中,并将使用命名模型User来实例化特定用户。
belongs_to :user
User
第二个命令还在新user_id列上添加索引。