현재 사용자 개체가 있지만 중복을 피하기 위해 MerchantUser/ProviderUser라는 발표자 개체로 래핑하고 싶습니다. 그러나 ActiveAdmin을 사용하면이 작업을 수행하는 방법이 다소 혼란 스럽습니다. 내가 할, 나는 아직도 그 user.class을보고하고있어 사용자가 아니라 내가 정의한 래퍼 클래스와 동일한 ... 해당 발표자로하지만, 인덱스의 사용자를 변경하는 before_create를 사용하여 시도했습니다.레일스 ActiveAdmin 리소스 오브젝트 수정
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