2016-02-05 11 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 उपयोग कर सकते हैं नामकरण करना चाहते हैं project.user का।

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

या

$ 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 
तो

:

उत्तर

4

आप इसे दो तरह से कर सकते हैं

$ rake db:migrate 
+9

मैं पता लगाने के लिए कि 'rename_column' भी नाम बदलने अनुक्रमित का ख्याल रखता है खुश था । – Subtletree

+1

आप 't.rename' –

+0

के साथ [' change_table'] (http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table) का भी उपयोग कर सकते हैं मुझे अज्ञात विशेषता 'new_id' मिलती है? –