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
或所需的任何关联来更新模型。     

要回复问题请先登录注册