Rails迁移外键

时间:2013-09-03 20:08:52

标签: ruby-on-rails-3 ruby-on-rails-4 database-migration

我最近发现我的两个表之间的关系是错误的,我想进行必要的更改 - 这涉及在我的住宿表上删除一个外键并在我的用户表上添加一个外键。

我使用以下方法创建了一个迁移文件:

rails g migration ForeignKeyAdjustment

然后将其添加到新的迁移文件中:

class ForeignKeyAdjustment < ActiveRecord::Migration
  def self.up
    remove_column :accommodations, :user_id
    add_column :users, :accommodation_id, :integer
  end
end

然后我使用以下方式运行迁移:

bundle exec rake db:migrate

然后使用控制台检查每个表中的列名称,并且更改尚未生效!

rails console

User.column_names

我错过了什么?

P.S。如果我只是删除我的模型和数据库迁移文件并从终端生成新模型,这会是一个主要问题吗?这不会花费我很长时间,也不需要考虑重要数据。

1 个答案:

答案 0 :(得分:0)

您是否建立了Active Record关联?这将允许您将记录从一个表映射到另一个表。否则,列名称只是表中的任意名称。

您是否将外键属性添加到模型中? 这将通过attr accessible

创建现有模型的属性

这些可能是一些潜在的问题

协会指南 http://guides.rubyonrails.org/association_basics.html

我还会将问题的标题编辑为“迁移外键”,以便其他人可以找到类似问题的答案。