在轨

2016-02-05 19 views
5

我有一个移民类项目这样在轨

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代替用户。

回答

4

你可以做到这一点有两种方式:

#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 
+9

我很高兴地发现,'rename_column'也需要重命名索引的护理。 – Subtletree

+1

您还可以使用''change_table'](http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table)'t.rename' –

+0

我得到未知属性'new_id'? –