【问题标题】:RailsAdmin custom action to restore soft deleted recordsRailsAdmin 自定义操作以恢复软删除记录
【发布时间】:2016-01-13 05:03:23
【问题描述】:

我正在使用带有 rails_admin 0.8.1、mongoid 5.0 和 mongoid_paranoia 的 Rails 4.1.14。我创建了RailsAdmin custom action 来恢复软删除的用户。

class Restore
  ...
  register_instance_option :controller do
    Proc.new do
      object.restore
      ...
    end
  end
end

但我不断得到

User with id '5695997df5740c17b0000002' could not be found

来自我的开发日志

Started GET "/admin/user/5695997df5740c17b0000002/restore" for 127.0.0.1 at 2016-01-12 16:35:04 -0800
Processing by RailsAdmin::MainController#restore as HTML
  Parameters: {"model_name"=>"user", "id"=>"5695997df5740c17b0000002"}
MONGODB | localhost:27017 | rails425_dev.find | STARTED | {"find"=>"users", "filter"=>{"deleted_at"=>nil, "_id"=>BSON::ObjectId('56956c76f5740c1d68000000')}, "limit"=>-1}

问题是每个 default_scope 查询会过滤掉 deleted_at 不为零的记录。关于如何覆盖它的任何建议?

【问题讨论】:

  • 您是如何用偏执狂恢复 rails_admin 中的记录的?我添加了 with_deleted 和 only_deleted 范围,我看到它们但无法恢复或永久销毁它们。甚至添加了自定义操作来恢复它,但它说找不到记录。
  • 要回答大约 2 年前的 @StarWars 问题,请参阅 Dave Burt 的回答 here

标签: ruby-on-rails ruby-on-rails-4 mongoid rails-admin acts-as-paranoid


【解决方案1】:

很遗憾,我将不得不将此列为答案,因为我没有评论的声誉。

我相信您的问题可以在这里得到解答: How do I show unscoped models in Rails Admin?

我处理它的方法是创建一个满足我对 RailsAdmin 要求的范围并改用该范围;也就是说,总的来说,我尽量避免default_scope

【讨论】:

  • 谢谢。根据提供的链接,我必须修改 MainController 中的 get_object。 def get_object fail(RailsAdmin::ObjectNotFound) unless (@object = @abstract_model.model.unscoped.find(params[:id])) end
猜你喜欢
  • 1970-01-01
  • 2012-08-23
  • 2017-06-12
  • 1970-01-01
  • 2013-02-26
  • 2012-05-20
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
相关资源
最近更新 更多