首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Rails中使用user_id:integer与user:references生成模型

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

Stack Overflow用户
提问于 2011-10-23 03:11:47
回答 2查看 147.7K关注 0票数 197

我搞不懂如何生成一个belongs_to另一个模型的模型。我的书使用以下语法将Micropost与User关联:

代码语言:javascript
复制
rails generate model Micropost user_id:integer

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

代码语言:javascript
复制
rails generate model Micropost user:references

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-23 03:24:11

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

代码语言:javascript
复制
:001 > Micropost
=> Micropost(id: integer, user_id: integer, created_at: datetime, updated_at: datetime)

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

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

票数 207
EN

Stack Overflow用户

发布于 2011-10-23 03:25:58

对于前者,约定优于配置。引用另一个表时,Rails默认使用

代码语言:javascript
复制
 belongs_to :something

就是去找something_id

referencesbelongs_to实际上是较新的编写前者的方式,几乎没有什么怪癖。

重要的是要记住,它不会为您创建外键。为此,您需要使用以下任一方法显式设置它:

代码语言:javascript
复制
t.references :something, foreign_key: true
t.belongs_to :something_else, foreign_key: true

或者(注意复数):

代码语言:javascript
复制
add_foreign_key :table_name, :somethings
add_foreign_key :table_name, :something_elses`
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7861971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档