Rails - можно ли запустить методы миграции в общей задаче rake? - PullRequest
4 голосов
/ 28 июля 2010

Я знаю, что это не лучшая практика, и, скорее всего, ее даже не следует использовать, поскольку именно для этого используются миграции, но мне было интересно, возможно ли выполнить специфичные для миграции команды в обычной задаче rake.Что-то вроде:

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

Спасибо

Ответы [ 2 ]

6 голосов
/ 29 июля 2010

Возможно выполнить произвольную псевдомиграцию в ваших задачах с граблями:

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
2 голосов
/ 29 июля 2010

Да, вы должны сделать что-то вроде этого:

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

Не проверено, но здесь важно включить класс миграции, а затем отправить метод, который вы хотите запустить.

ОБНОВЛЕНО для использования ActiveRecord::Migration напрямую через @ tadman

...