当前位置:首页 > 网站旧栏目 > 学习园地 > 设计软件教程 > 每天一剂Rails良药之Safely Use Models in Migrations

每天一剂Rails良药之Safely Use Models in Migrations
2010-01-14 07:03:16  作者:  来源:
我们平时做Migrations时除了更改schema,还经常需要更改data
但我们以前的Migrations可能不工作,因为data之间可能有依赖关系
我们可以通过在Migrations里定义Model来解决该问题:
Java代码 复制代码
  1. class AddPositionToProducts < ActiveRecord::Migration   
  2.   class Product < ActiveRecord::Base; end   
  3.   class SoftwareProduct < Product; end   
  4.   class CourseProduct < Product; end   
  5.   
  6.   def self.up   
  7.     add_column :products, :position, :integer   
  8.     Product.reset_column_information   
  9.     SoftwareProduct.find(:all).inject(0do |i, p|   
  10.       p.update_attribute(:position, i)   
  11.        i+1  
  12.     end   
  13.     CourseProduct.find(:all).inject(0do |i, p|   
  14.       p.update_attribute(:position, i)   
  15.       i+1  
  16.     end   
  17.   end   
  18.   
  19.   def self.down   
  20.     remove_column :products, :position   
  21.   end   
  22. end  

这里我们在Migration里面定义Model,相当于给Model加了一个名字空间AddPositionToProducts::Product,这就能保证该Model在你的migrations里是唯一的

安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询