【问题标题】: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_at 和 updated_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