如何从RailsAdmin中的视图中排除PaperTrail版本

时间:2015-07-21 07:42:57

标签: ruby-on-rails rails-admin paper-trail-gem

我使用RailsAdmin v0.6.8和PaperTrail进行版本控制。

我的每个has_paper_trail模型的列表,显示,创建和编辑视图都包含versions属性。事实上,创建和编辑视图允许添加/删除版本,这对我来说并不合适。除了使用exclude_fields:每个模型的每个视图的版本之外,还有一种全局的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

方法1

如果所有模型都继承了一个抽象类(例如:“ ApplicationRecord”)
您可以创建一个新文件(例如:app/models/concerns/exclude_versions.rb):

module ExcludeVersions
  extend ActiveSupport::Concern

  included do
    rails_admin do
      configure :versions do
        hide
      end
    end
  end

end

并像这样编辑抽象类:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
  has_paper_trail

  def self.inherited(subclass)
    subclass.include(ExcludeVersions)
    super
  end
end

方法2

如果不是所有模型都继承了抽象类,则只需在config/initializers/rails_admin.rb中添加这样的代码

  Rails.application.eager_load! if Rails.env.development?
  ### next if ['ApplicationRecord'].include?(imodel.name) ### if all models are inherited an abstract class, please uncomment this line, or some strange error will happen
  ActiveRecord::Base.descendants.each do |imodel|
    config.model "#{imodel.name}" do
      configure :versions do
        hide
      end
    end
  end

参考:https://github.com/sferik/rails_admin/wiki/Models#configuring-models-all-at-once

答案 1 :(得分:0)

在rails_admin configuratoin中,您可以指定它:

config.actions do
  history_index do
    except %w(ModelA ModelB)
  end
end

或反过来说:

config.actions do
  history_index do
    only %w(ModelA ModelB)
  end
end

答案 2 :(得分:0)

我在rails_admin初始化程序中执行了以下操作,但它确实有效。

config.model 'DcDiscipline' do
  edit do
    exclude_fields :versions 
  end     
end