【发布时间】: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 表并使用新列重新创建它。由于Study 和Report 模型之间的关联,依赖的studies 被销毁。
如果这是真的 - 有没有办法阻止 Rails 这样做?或者,有人可以解释为什么会这样吗?
【问题讨论】:
-
您可以在迁移的
self.up方法中编写此代码:execute "ALTER TABLE reports ADD COLUMN username varchar(200)"和self.down:execute "ALTER TABLE reports DROP COLUMN username"并尝试! -
按照您的建议尝试使用显式 mysql 进行操作 - 结果相同。
标签: mysql ruby-on-rails-2 rails-migrations