web-dev-qa-db-ja.com

rails)の外部キー列名を変更します

私は次のようなProject移行クラスを持っています:

class CreateProjects < ActiveRecord::Migration
 def change
  create_table :projects do |t|
   t.string :title
   t.text :description
   t.boolean :public
   t.references :user, index: true, foreign_key: true

   t.timestamps null: false
  end
 end
end

プロジェクトテーブルに列名user_idが作成されますが、owner_idの代わりにproject.ownerを使用できるように、列にproject.userという名前を付けたいと思います。

11
Azam Ikram

あなたはそれを2つの方法で行うことができます:

#app/models/project.rb
class Project < ActiveRecord::Base
   belongs_to :owner, class_name: "User", foreign_key: :user_id
end 

OR

$ Rails g migration ChangeForeignKeyForProjects

# db/migrate/change_foreign_key_for_projects.rb
class ChangeForeignKeyForProjects < ActiveRecord::Migration
   def change
      rename_column :projects, :user_id, :owner_id
   end
end

その後:

$ rake db:migrate
11
Richard Peck