Active Record Migrations
https://guides.rubyonrails.org/active_record_migrations.html
示例:
class CreateProducts < ActiveRecord::Migration[7.0]
def change
create_table :products do |t|
t.string :name
t.text :description
t.timestamps
end
end
end可以使用 up 和 down 而不是 change:
class ChangeProductsPrice < ActiveRecord::Migration[7.0]<br />
def up<br />
change_table :products do |t|<br />
t.change :price, :string<br />
end<br />
end def down<br />
change_table :products do |t|<br />
t.change :price, :integer<br />
end<br />
end<br />
end也可以直接命令创建的时候明确类型:
bin/rails generate migration CreateProducts name:string part_number:string列的增加或者重命名:
<code class="highlight ruby"><span class="n">add_column</span> <span class="ss">:users</span><span class="p">,</span> <span class="ss">:home_page_url</span><span class="p">,</span> <span class="ss">:string</span>
<span class="n">rename_column</span> <span class="ss">:users</span><span class="p">,</span> <span class="ss">:email</span><span class="p">,</span> <span class="ss">:email_address</span>删除表:
<code class="highlight ruby"><span class="n">drop_table</span> <span class="ss">:distributors
<span class="ss">回滚:</span></span>这将通过恢复 change 方法或运行 down 方法回滚最新的迁移。 如果您需要撤消多个迁移,您可以提供一个 STEP 参数:
bin/rails db:rollback
bin/rails db:rollback STEP=3还原:
将还原最后 3 次迁移。
db:migrate:redo 命令是执行回滚然后再次迁移备份的快捷方式。 与 db:rollback 命令一样,如果需要返回多个版本,可以使用 STEP 参数,例如:
bin/rails db:migrate:redo STEP=3设置环境:
bin/rails db:migrate RAILS_ENV=test执行migrate的时候进行创建数据删除数据:
class AddInitialProducts < ActiveRecord::Migration[7.0]
def up
5.times do |i|
Product.create(name: "Product ##{i}", description: "A product.")
end
end def down
Product.delete_all
end
end