gpt4 book ai didi

ruby-on-rails - ActiveAdmin单表继承公共(public)属性表单重写

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:47 25 4
gpt4 key购买 nike

我正在使用 ActiveAdmin,并且我有一个使用单表继承的项目。我的问题很简单:我的模型的公共(public)部分的形式是否可以只写一次,或者我每次都被迫重写?

最佳答案

您可以使用 ruby​​ 的 #to_proc 和将 proc 转换为 block 的技巧。

这是我利用它的解决方案。它允许正常代码重新加载,不扩展/猴子修补任何现有模块,并允许自定义管理定义。

在此示例中,Animal 是基础 STI 类,DogCat 继承自它。

将以下代码放入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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com