成功删除(活动记录,Rails)



我正在开发一个Rails应用程序,该应用程序具有更新一些用户信息的后台进程。为此,该方法必须删除所有现有信息(存储在另一个表中),并从Internet获取新信息。问题是,如果中途出现问题,用户在进程再次运行之前无法获得信息。

有事情要做,比如:

transaction = EntityUser.delete_all(:user_id => @current_user.id)
#instructions that adds new  entity
...
...
transaction.commit
谁能建议我做些什么来避免这种问题?

谢谢

阅读有关ActiveRecord::Transactions的信息。你可以把所有东西都包装在一个块中

ActiveRecord::Base.transaction do
  EntityUser.delete_all(:user_id => @current_user.id)
  # ...
end

如果出现问题,您可以在该块中调用raise ActiveRecord::Rollback,以导致事务块中数据库的所有更改被恢复。


另一个想法是为User软删除EntityUser实例,而不是实际从数据库中删除它们。有一些宝石可以帮助您实现此功能,例如 acts_as_paranoid

你会

  1. 软删除EntityUser实例
  2. 获取并构建新的EntityUser实例
  3. (可选)如果一切顺利,则从数据库中刷新软删除实例

如果使用此方法出现问题,则很容易重新删除软删除的记录。

相关内容

  • 没有找到相关文章

最新更新