模型的替代方法

时间:2019-07-03 08:21:16

标签: ruby-on-rails-3 activeadmin

我正在使用以下代码自定义我的活动管理员

ActiveAdmin.register Question do
  index do
    Question.column_names.each do |c|
      column c.to_sym
    end
  end

  show do
    attributes_table do
      Question.column_names.each do |c|
        row c.to_sym
      end
    end
  end
end

但是,我不想显示某些字段,例如created_atupdated_at字段。如何覆盖此方法以隐藏那些字段?是否有办法也适用于所有其他模型?

1 个答案:

答案 0 :(得分:0)

我找到了文件app/models/application_record.rb。在这里,我写了一个新方法(如果需要,您可以覆盖当前方法,但是我认为这种新方法更好)

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

  def self.column_names_without(*names)
    column_names - (%w[created_at updated_at] | names)
  end
end

然后,将ActiveAdmin代码修改为

ActiveAdmin.register Question do
  index do
    selectable_column
    Question.column_names_without('quiz_id').each do |c|
      column c.to_sym
    end
  end

  show do
    attributes_table do
      Question.column_names_without('quiz_id').each do |c|
        row c.to_sym
      end
    end
  end

end