我正在使用 ActiveAdmin,并且我有一个使用单表继承的项目。我的问题很简单:我的模型的公共(public)部分的形式是否可以只写一次,或者我每次都被迫重写?
最佳答案
您可以使用 ruby 的 #to_proc
和将 proc 转换为 block 的技巧。
这是我利用它的解决方案。它允许正常代码重新加载,不扩展/猴子修补任何现有模块,并允许自定义管理定义。
在此示例中,Animal
是基础 STI 类,Dog
和 Cat
继承自它。
将以下代码放入app/admin/animal.rb
:
class AnimalAdminConfig
attr_reader :opts
def initialize(opts = {})
@opts = opts
end
def to_proc
this = self
proc do
scope :active
index do
column this.opts[:name_label], :name
column ....
end
end
end
end
将以下代码放入app/admin/cat.rb
:
ActiveAdmin.register(Cat, &AnimalAdminConfig.new(name_label: "Kitten's name"))
将以下代码放入app/admin/dog.rb
:
ActiveAdmin.register(Dog, &AnimalAdminConfig.new(name_label: "Puppy's name"))
关于ruby-on-rails - ActiveAdmin单表继承公共(public)属性表单重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23157332/