我使用RailsAdmin v0.6.8和PaperTrail进行版本控制。
我的每个has_paper_trail模型的列表,显示,创建和编辑视图都包含versions属性。事实上,创建和编辑视图允许添加/删除版本,这对我来说并不合适。除了使用exclude_fields:每个模型的每个视图的版本之外,还有一种全局的方法吗?
谢谢!
答案 0 :(得分: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
如果不是所有模型都继承了抽象类,则只需在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