如何解决RoR-通过关联创建的外键并迁移或“手工”或脚手架?
| 刚开始学习Ruby on Rails。我正在使用RoR3。我已阅读以下内容:http://guides.rubyonrails.org/association_basics.html 但是我想确保我完全理解。 在创建新模型时(我现在正在通过脚手架进行操作),我应该在那一点上指定foreign_key字段,还是由关联完全处理?我相信关联仅在应用程序级别,而不在数据库级别,对吗? 所以我认为我必须这样做:rails generate scaffold post body:text title:string user_id:integer
因此,总而言之,在创建博客应用程序时,是否必须在帖子模型中指定user_id字段,或者在迁移时用户模型的has_many :posts
会实际将其添加到数据库中(我的是mysql)?
如果答案是当我首先创建模型(通过脚手架或手工创建)时应该这样做,那么当我以后决定要添加外键时会发生什么,必须将其添加为“ 2”新迁移中的声明?
解决方法
你是对的。如您所述,在创建脚手架/模型/迁移时需要指定外键,以使数据库正确无误,而has_many会为您处理模型。
因此,对于支架(或模型)的初始生成,只需执行以下操作:
rails generate scaffold post body:text title:string user_id:integer
如您所述,并为模型本身添加has_many
。
对于以后的添加,您将组成一个新的迁移,类似于(假设您想使用生成,但您可以编写自己的迁移):
rails generate migration add_user_id_to_posts user_id:integer
这样,您可以运行rake db:migrate
,然后使用has_many
或所需的任何关联来更新模型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。