Rails 3:belongs_to,has_one和Migrations
我是Rails的新手,我是从Django背景来的。 我已经接受了这样一个事实,即模型和数据库模式在Rails,在线Django中是分开的。 但是,我仍然在处理迁移问题。
我的问题很简单 – 如何使用迁移向模型添加关系? 例如,我将Artist
和Song
作为空模型,目前是ActiveRecord::Base
子类,没有任何关系。
我需要这样做:
class Artist < ActiveRecord::Base has_many :songs end class Song < ActiveRecord::Base belongs_to :artist end
但是如何使用rails g migrate
更改架构以反映这一点? 我正在使用Rails 3.1.3。
您必须在迁移文件中添加外键,如下所示:
def change create_table :songs do |t| t.references :artist end add_index :songs, :artist_id end
现在,在Rails 4中,您可以:
class AddProcedureIdToUser < ActiveRecord::Migration def change add_reference :users, :procedure, index: true end end
到现有的模型
您可以生成迁移
rails g migration AddProcedureIdToUser procedure:references
谢谢