【问题标题】:Override method for Model模型的覆盖方法
【发布时间】:2019-07-03 08:21:16
【问题描述】:

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

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 这样的字段。如何覆盖此方法以隐藏这些字段?有没有办法申请所有其他模型?

【问题讨论】:

    标签: ruby-on-rails-3 activeadmin


    【解决方案1】:

    我找到了文件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
    
    

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 2021-12-14
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2019-03-30
      相关资源
      最近更新 更多