Не могу обновить записи в моих миграциях базы данных Rails - PullRequest
0 голосов
/ 06 октября 2010

Например, у меня есть следующая миграция

class AddStatusField < ActiveRecord::Migration
  def self.up
    add_column :tasks, :status, :string
    Task.update_all "status='complete'", "completed = 't'"
    remove_column :tasks, :completed
  end
end

Когда я запускаю это (используя rake db:migrate), я получаю следующее сообщение

==  AddStatusField: migrating =================================================
-- add_column(:tasks, :status, :string)
   -> 0.0010s
-- update_all("status='complete'", "completed = 't'")
rake aborted!
An error has occurred, this and all later migrations canceled:

undefined method `update_all' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0xd3d34a8>

Если я сразу запускаю миграцию,опять звонки update_all кажутся работающими.

Я использую Rails 2.3.5 и sqlite3.

Что дает?

Ответы [ 2 ]

4 голосов
/ 06 октября 2010

Похоже, что это может быть конфликт имен с Task. Это терпит неудачу с любым другим классом в вашем приложении или просто Task?

Возможно, вы сможете вызвать его, используя ::Task, чтобы указать, что вам нужен класс Task в корневом пространстве имен. Например, Rake определяет свой собственный класс Task, и, возможно, что-то в процессе миграции делает то же самое.

1 голос
/ 06 октября 2010

Попробуйте добавить

Task.reset_column_information

прямо перед вашим update_all

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...