簡體   English   中英

Rails - 可以在通用rake任務中運行遷移方法嗎?

[英]Rails — Possible to run migration methods in generic rake task?

我知道這不是最佳實踐,並且很可能甚至不應該使用,因為遷移的用途是什么,但我想知道是否可以在常規rake任務中執行特定於遷移的命令。 就像是:

namespace :dummy do
    task :update => :environment do
      add_column :users, :deleted, :boolean, { :null => false, :default => false }
   end
end

謝謝

可以在rake任務中運行任意偽遷移:

namespace :dummy do
  task :update => :environment do
    ActiveRecord::Base.connection.add_column :users, :deleted, :boolean, :null => false, :default => false
  end
end

如果你做了很多這樣的事情,請使用簡寫:

namespace :dummy do
  task :update => :environment do
    c = ActiveRecord::Base.connection

    c.add_column :users, :deleted, :boolean, :null => false, :default => false
  end
end

是的,你應該做這樣的事情:

namespace :dummy do
  task :update => :enviroment do
    ActiveRecord::Migration.send(:add_column, :users, :deleted, :boolean, { :null => false, :default => false })
  end
end

沒有經過測試,但重要的是包含遷移類,然后發送您希望運行的方法。

更新為直接通過@tadman使用ActiveRecord::Migration

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM