刚开始学习Ruby on Rails。我正在使用RoR 3.我读过这个:http://guides.rubyonrails.org/association_basics.html
但我想确保完全理解。
在创建新模型时(我现在正在通过脚手架做),我应该在那时指定foreign_key字段,还是该关联完全处理?我认为关联只是在app级别,而不是在db级别,对吗?
所以我认为我必须这样做:
rails generate scaffold post body:text title:string user_id:integer
总而言之,在创建博客应用程序时,我必须在post模型中指定user_id字段,或者用户模型的has_many :posts
是否真正将其添加到db(我的是mysql)时迁移?
如果答案是我在第一时间(通过脚手架或手工)创建模型时应该这样做,当我稍后决定要添加外键时会发生什么,我必须添加作为新迁移中的execute
语句?
答案 0 :(得分:5)
你是对的。您需要在创建脚手架/模型/迁移时指定外键,如您所述,以使数据库正确,并且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
或您需要的任何关联来更新模型。