Eu tenho esta linha:
factory.workers.where.not(confirmed_at:nil).where(job_roles: {heavy_lifting:true, sensitive_area: false}).pluck(:work_capacity)
Mas a tabela de associação job_roles
depende do nome da classe da fábrica, e tenho 5 tipos de fábricas. Então, se factory.class.name == "DistributionCenter"
então job_roles
seria realmente distribution_center_roles
, ou se factory.class.name == "AutomotiveAssemblyPlant"
então job_roles
seria automotive_assembly_plant_roles
etc.
Existe alguma maneira de subdividir o nome da classe no nome da tabela de associação no código de consulta do ActiveRecord, de modo que, em vez de dizer job_roles
, diga distribution_center_roles
ou automotive_assembly_plant_roles
(etc), com base no nome da classe factory
?
gosto
factory.workers.where.not(confirmed_at:nil).where((factory.class.name + "_roles").string_to_tablename_rails_method: {heavy_lifting:true, sensitive_area: false}).pluck(:work_capacity)
ou eu tenho que fazer:
if factory.is_a?(DistributionCenter)
factory.workers.where.not(confirmed_at:nil).where(distribution_center_roles: {heavy_lifting:true, sensitive_area: false}).pluck(:work_capacity)
elsif factory.is_a?(AutomotiveAssemblyPlant)
factory.workers.where.not(confirmed_at:nil).where(automotive_assembly_plant_roles: {heavy_lifting:true, sensitive_area: false}).pluck(:work_capacity)
etc