bulk參數 小青年

bulk參數

:bulk => true可以讓變更資料庫欄位的Migration更有效率的執行,如果沒有加這個參數,或是直接使用add_columnrename_columnremove_column等方法,那麼Rails會拆開SQL來執行,例如:

change_table(:users) do |t|
 t.string :company_name
 t.change :birthdate, :datetime
end

會產生:

ALTER TABLE `users` ADD `im_handle` varchar(255) ALTER TABLE `users` ADD `company_id` int(11) ALTER TABLE `users` CHANGE `updated_at` `updated_at` datetime DEFAULT NULL

加上:bulk => true之後:

change_table(:users, :bulk => true) do |t|
 t.string :company_name
 t.change :birthdate, :datetime
end

會合併產生一行SQL

ALTER TABLE `users` ADD COLUMN `im_handle` varchar(255), ADD COLUMN `company_id` int(11), CHANGE `updated_at` `updated_at` datetime DEFAULT NULL

這對已有不少資料量的資料庫來說,會有不少執行速度上的差異,可以減少資料庫因為修改被Lock鎖定的時間。

本段来自:

http://ihower.tw/rails3/migrations.html

原文地址:https://www.cnblogs.com/perish/p/2623398.html