原创作者: hideto
阅读:1029次
评论:0条
更新时间:2011-05-26
我们平时做Migrations时除了更改schema,还经常需要更改data
但我们以前的Migrations可能不工作,因为data之间可能有依赖关系
我们可以通过在Migrations里定义Model来解决该问题:
这里我们在Migration里面定义Model,相当于给Model加了一个名字空间AddPositionToProducts::Product,这就能保证该Model在你的migrations里是唯一的
但我们以前的Migrations可能不工作,因为data之间可能有依赖关系
我们可以通过在Migrations里定义Model来解决该问题:
class AddPositionToProducts < ActiveRecord::Migration class Product < ActiveRecord::Base; end class SoftwareProduct < Product; end class CourseProduct < Product; end def self.up add_column :products, :position, :integer Product.reset_column_information SoftwareProduct.find(:all).inject(0) do |i, p| p.update_attribute(:position, i) i+1 end CourseProduct.find(:all).inject(0) do |i, p| p.update_attribute(:position, i) i+1 end end def self.down remove_column :products, :position end end
这里我们在Migration里面定义Model,相当于给Model加了一个名字空间AddPositionToProducts::Product,这就能保证该Model在你的migrations里是唯一的
评论 共 0 条 请登录后发表评论