У меня сложная проблема с Devise и драгоценным камнем paranoia(acts_as_paranoid). Моя пользовательская модель относительно проста:
class User < AR::Base
devise :confirmable, :other_config_options
acts_as_paranoid
end
Сначала я добавил гем Devise без возможности подтверждения. Затем я позже добавил подтверждаемую опцию с этой миграцией:
def up
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_token, :string
add_column :users, :confirmation_sent_at, :datetime
add_column :users, :unconfirmed_email, :string
add_index :users, :confirmation_token, unique: true
User.update_all(:confirmed_at => Time.now)
end
Никаких проблем до этого момента. Затем я добавил гем Paranoia и строку acts_as_paranoid
в модель пользователя. Моя база данных в текущем состоянии в порядке, но я пытаюсь сбросить базу данных, чтобы синхронизировать ее с производственными данными, и здесь у меня возникают проблемы. Когда я выполняю db:reset, происходит сбой вышеуказанной миграции:
PG::UndefinedColumn: ERROR: column users.deleted_at does not exist
Проблема в том, что моя модель содержит директиву acts_as_paranoid
, которая действует только с текущим снимком базы данных. Если я откатываюсь к предыдущему снимку базы данных, User::deleted_at
не существует, драгоценный камень паранойи все еще пытается обновить только неудаленные объекты, и мой запрос завершается ошибкой.
Любые мысли об элегантном способе справиться с этой ситуацией?