:show member_action :history do -6ren">
gpt4 book ai didi

ruby-on-rails - Rails - ActiveAdmin 和 Papertrail - 一种 DRY 方法

转载 作者:行者123 更新时间:2023-12-04 16:08:30 26 4
gpt4 key购买 nike

我有很多使用 PaperTrail 的模型,例如:

class User < ActiveRecord::Base
has_paper_trail
end

在我的 ActiveAdmin 模型文件中:

ActiveAdmin.register User do

...

# versioning part
action_item :history, only: :show do
link_to('History', history_backend_user_path(user), method: :get)
end

sidebar :versionate, :partial => "layouts/version", :only => :show

member_action :history do
@user = User.find(params[:id])
@versions = @user.versions.reorder(created_at: :desc)
render "layouts/history"
end
end

我必须为每个模型 重复这行,我想知道如何才能把它擦干。

最佳答案

我最终得到了以下解决方案正在运行(另请注意,对User 资源的所有引用都已被概括):

# app/admin-shared/active_admin_loggable.rb

module ActiveAdminLoggable
def self.extended(base)
base.instance_eval do
action_item :history, only: :show do
link_to('History',
eval("history_backend_#{resource.class.to_s.downcase}_path(#{resource.class.to_s.downcase})"),
method: :get
)
end

sidebar :versionate, :partial => "layouts/version", :only => :show

member_action :history do
@this_resource = eval("resource.class").find(params[:id])
@versions = @this_resource.versions.reorder(created_at: :desc)
render "layouts/history"
end
end
end
end

和:

# app/admin/user.rb
ActiveAdmin.register User do
extend ActiveAdminLoggable
...
end

关于ruby-on-rails - Rails - ActiveAdmin 和 Papertrail - 一种 DRY 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47333426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com