У меня проблема с Devise и paranoia (act_as_paranoid). Моя модель пользователя относительно проста:Rails actions_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
к модели пользователя. Моя база данных прекрасна в текущем состоянии, но я пытаюсь сбросить мою базу данных, чтобы синхронизировать ее с производственными данными, и именно здесь я столкнулся с проблемами. Когда я делаю БД: сброс, он не вышеуказанные миграций:
PG::UndefinedColumn: ERROR: column users.deleted_at does not exist
Проблема заключается в том, что моя модель содержит директиву acts_as_paranoid
, которая действительна только с текущим снимком базы данных. Если я вернусь к предыдущему снимку базы данных, User::deleted_at
не существует, камень paranoia по-прежнему пытается обновить только не удаленные объекты, и мой запрос завершится с ошибкой.
Любые мысли об элегантном способе справиться с этой ситуацией?
Вы пытались создать миграции для недостающих столбцов? Paranoid gem ~ act_as_paranoid говорит, что вам нужно выполнить следующую миграцию: rails generate migration AddDeletedAtToClients deleted_at: datetime: index – Miknash
Да, но это сделано позже в пути миграции. Эта ошибка происходит до этого. У меня не возникало проблем с установкой параноидального кода - я столкнулся с этой проблемой только тогда, когда пытался сбросить и восстановить базу данных с нуля. –
У меня такая же проблема. Если я прокомментирую act_as_paranoid в моей модели, это работает, но это, очевидно, просто прекращает все проверки в модели, если она удалена. Заинтересованы в правильном решении этого. –