我們平時(shí)做Migrations時(shí)除了更改schema,還經(jīng)常需要更改data
但我們以前的Migrations可能不工作,因?yàn)閐ata之間可能有依賴(lài)關(guān)系
我們可以通過(guò)在Migrations里定義Model來(lái)解決該問(wèn)題:
這里我們?cè)贛igration里面定義Model,相當(dāng)于給Model加了一個(gè)名字空間AddPositionToProducts::Product,這就能保證該Model在你的migrations里是唯一的
但我們以前的Migrations可能不工作,因?yàn)閐ata之間可能有依賴(lài)關(guān)系
我們可以通過(guò)在Migrations里定義Model來(lái)解決該問(wèn)題:
- 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
這里我們?cè)贛igration里面定義Model,相當(dāng)于給Model加了一個(gè)名字空間AddPositionToProducts::Product,這就能保證該Model在你的migrations里是唯一的
安徽新華電腦學(xué)校專(zhuān)業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線(xiàn)咨詢(xún)】

熱門(mén)精品專(zhuān)業(yè)

