【问题标题】:Rails migration deleted entries from associated tablesRails 迁移从关联表中删除了条目
【发布时间】:2015-06-09 12:44:26
【问题描述】:

在 rails (2.3.5) 我有 2 个关联模型:

class Report < ActiveRecord::Base
  has_many :studys, :dependent => :destroy
end

class Study < ActiveRecord::Base
  validates_presence_of :name, :report_id
  belongs_to :report
end

我正在报告表上运行迁移:

class AddReportUsername< ActiveRecord::Migration

def self.up
  add_column :reports, :username, :text, :limit => 20
end

此迁移会删除我的 studies 表中的所有条目。

我的假设是add_column 调用的ALTER TABLE 命令会删除reports 表并使用新列重新创建它。由于StudyReport 模型之间的关联,依赖的studies 被销毁。

如果这是真的 - 有没有办法阻止 Rails 这样做?或者,有人可以解释为什么会这样吗?

【问题讨论】:

  • 您可以在迁移的self.up 方法中编写此代码:execute "ALTER TABLE reports ADD COLUMN username varchar(200)"self.downexecute "ALTER TABLE reports DROP COLUMN username" 并尝试!
  • 按照您的建议尝试使用显式 mysql 进行操作 - 结果相同。

标签: mysql ruby-on-rails-2 rails-migrations


【解决方案1】:

你的模型和迁移对我来说看起来不错,所以我最好的猜测是你没有使用正确的命令......你只是在使用普通的旧 rake db:migrate 还是更高级的东西?

【讨论】:

  • 没什么特别的。就rake db:migrate
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 2011-11-04
相关资源
最近更新 更多