【问题标题】:Change foreign key column name in rails更改rails中的外键列名
【发布时间】:2016-05-15 13:27:09
【问题描述】:

我有一个像这样的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

【问题讨论】:

    标签: ruby-on-rails database-migration rails-migrations


    【解决方案1】:

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

    #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
    

    然后:

    $ rake db:migrate
    

    【讨论】:

    • 我很高兴地发现 rename_column 也负责重命名索引。
    • 你也可以使用change_tablet.rename
    • 我得到未知属性new_id?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多