使い方
refernces型は外部キーを追加する時に使います
今回はtweetsモデルにuser_idを追加します。(user has_many tweet)
class CreateTweets < ActiveRecord::Migration
def change
create_table :tweets do |t|
t.string :text
t.references :user
t.timestamps
end
add_index :tweets, [:user_id, :created_at]
end
end
belongs_to
はreferences
のエイリアスなので、
t.references :user
は
t.belongs_to :user
とすることもできます。
実践例
###テーブル作成時
rails g model Tweet user:references
とすれば、
class CreateTweets < ActiveRecord::Migration
def change
create_table :tweets do |t|
t.references :user, index: true
t.timestamps
end
end
end
一発で出してくれます。ちなみにreferences
はbelongs_to
に入れ替えても同じです。
カラム追加時
rails g migration AddUserRefToTweets user:references
で、
class AddUserRefToTweets < ActiveRecord::Migration
def change
add_reference :tweets, :user, index: true
end
end
とできます。
##注意
references
やbelongs_to
を使うときは、カラムネームを指定する際に_id接尾子をつけません。
##参考
http://tkymtk.hatenablog.com/entry/rails-4-three-way-to-write-migration-2014-1