我正在开发 Rails 6 应用程序,并且有一个博客模型,其中包含FriendlyId
gem 生成的 slug。我添加了 Active admin,我必须添加此代码以config/initializers/active_admin.rb
使其正常工作并按 id 而不是slug
.
ActiveAdmin::ResourceController.class_eval do
def find_resource
resource_class.is_a?(FriendlyId) ? scoped_collection.friendly.find(params[:id]) : scoped_collection.find(params[:id])
end
end
然后我在软删除的帖子中添加了偏执狂。
我添加gem 'paranoia', '~> 2.4', '>= 2.4.2'
并运行
rails g migration AddDeletedAtToPosts deleted_at:datetime:index
在帖子模型中:
应用程序/模型/post.rb
class Post < ApplicationRecord
acts_as_paranoid
extend FriendlyId
friendly_id :title, :body use: :slugged
validates_presence_of :title, :body
end
这在视图和 Rails 控制台中工作正常,查看和销毁帖子没有问题。
但我想将软删除添加到我的active-admin
.
我安装gem "active_admin_paranoia" , '~> 1.0.11'
并添加
应用程序/管理员/blog.rb
ActiveAdmin.register Blog do
active_admin_paranoia
actions :all, except: [:edit]
permit_params :title, :body, :slug
end
现在,当我尝试view
进出仪表板时archive
,active-admin
我得到了
Started DELETE "/admin/posts/my-post-0" for ::1 at 2020-07-16 15:14:26 -0300
Processing by Admin::postsController#destroy as HTML
Parameters: {"authenticity_token"=>"aaaaaaa", "id"=>"my-post-0"}
AdminUser Load (0.3ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Post Load (0.5ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = $1 ORDER BY "posts"."id" ASC LIMIT $2 [["id", nil], ["LIMIT", 1]]
Completed 404 Not Found in 8ms (ActiveRecord: 0.8ms | Allocations: 3691)
ActiveRecord::RecordNotFound (Couldn't find Post with [WHERE "posts"."id" = $1]):
activerecord (6.0.3.2) lib/active_record/relation/finder_methods.rb:336:in `raise_record_not_found_exception!'
activerecord (6.0.3.2) lib/active_record/relation/finder_methods.rb:127:in `first!'
active_admin_paranoia (1.0.11) lib/active_admin_paranoia/dsl.rb:6:in `find_resource'
activeadmin (2.7.0) lib/active_admin/resource_controller/data_access.rb:90:in `resource'
inherited_resources (1.11.0) lib/inherited_resources/actions.rb:55:in `destroy'
actionpack (6.0.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.0.3.2) lib/abstract_controller/base.rb:195:in `process_action'
actionpack (6.0.3.2) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.0.3.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
我怎样才能解决这个问题?