gpt4 book ai didi

ruby-on-rails - Rails ActiveAdmin 修改资源对象

转载 作者:行者123 更新时间:2023-12-04 05:53:36 27 4
gpt4 key购买 nike

我目前有一个用户对象,但为了避免冗余,我想将它包装到一个名为 MerchantUser/ProviderUser 的演示者对象中。但是,对于 ActiveAdmin,我对如何执行此操作感到有些困惑。我已经尝试使用 before_create 将用户更改为相应的演示者,但在索引中...做,我仍然看到 user.class 等于 User 而不是我定义的包装类。

我研究了 scoping_collection 但不幸的是它只适用于集合而不适用于单个对象?

 ActiveAdmin.register User, as: "Companies" do # rubocop:disable Metrics/BlockLength
before_create do |user|
if user.merchant?
user = MerchantUser.new(user)
else
user = ProviderUser.new(user)
end
end

actions :all, except: [:destroy]
permit_params :name, :email, contract_attributes: [:id, :flat_rate, :percentage]

filter :role, as: :select
index do # rubocop:disable Metrics/BlockLength
column :name do |user|
user.name <---I want it so I can just do this without the if/else blocks like below.
end
column :role
column :contact_phone
column :email
column :website do |user|
if user.merchant?
user.company.website
else
user.provider.website
end
end

column :flat_rate do |user|
money_without_cents_and_with_symbol(user.contract.flat_rate)
end
column :percentage do |user|
number_to_percentage(user.contract.percentage, precision: 0)
end
actions
end

最佳答案

您是否研究过 Active Admin 对装饰器的支持? This page很全面。实现它们的最佳方式取决于您的装饰器/演示器对象是如何实现的。

链接摘要:使用 decorate_with 或研究使用 this gem用于 PORO 支持

关于ruby-on-rails - Rails ActiveAdmin 修改资源对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43002923/

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