我有一个Devise和偏执狂(acts_as_paranoid)gem的复杂问题。我的用户模型相对简单:Rails acts_as_paranoid迁移问题
class User < AR::Base
devise :confirmable, :other_config_options
acts_as_paranoid
end
我第一次加入了宝石设计没有确认的选项。然后,我后来添加了此迁移的可确认选项:
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
到目前为止没有问题。然后我将偏执狂宝石和acts_as_paranoid
行添加到用户模型中。我的数据库在当前状态下很好,但我试图重置我的数据库以将其与生产数据同步,这就是我遇到问题的地方。当我做了分贝:复位,它失败上述迁移:
PG::UndefinedColumn: ERROR: column users.deleted_at does not exist
麻烦的是,我的模型包含一个指令acts_as_paranoid
是只适用与当前数据库的快照。如果我回滚到以前的数据库快照,User::deleted_at
不存在,偏执gem仍然尝试只更新未删除的对象,并且我的查询失败。
任何想法,以优雅的方式来处理这种情况?
您是否尝试过丢失的列上创建迁移? Paranoid gem〜act_as_paranoid表示您需要运行以下迁移:rails生成迁移AddDeletedAtToClients deleted_at:datetime:index – Miknash 2014-12-03 18:12:55
是的,但稍后会在迁移路径中完成。这个错误发生在那之前。我没有任何安装偏执狂的问题 - 当我试图从头开始删除和重建我的数据库时,我只遇到了这个问题。 – 2014-12-03 19:41:39
我有同样的问题。如果我在我的模型中注释出acts_as_paranoid,它可以工作,但显然只是停止模型中正在进行的任何检查,看是否被删除。对这方面的适当解决方案感兴趣。 – 2014-12-09 22:49:50