Como passar métodos para o mapa Ruby
Oct 09 2020
Eu tenho o seguinte código:
wedding = Wedding.where(location_id: user_params[:locationId])
wedding.map(&:guests).each do |member|
user_ids << member.ids
end
No meu caso, :guestsé uma tabela de registro ativa, mas tenho algumas que gostaria de passar mappara gerar ouser_ids
Portanto, seria uma matriz de métodos como este, que eu gostaria de passar: [guests, bride, etc etc]
Seria ainda melhor se eu pudesse passar todo o array, mas caso contrário, se eu pudesse percorrer o array de métodos, isso também seria ótimo.
Alguma ideia?
EDIT: Estou tentando fazer isso sem sorte. Eu recebo: NameError (wrong constant name guests):
roles = ["guests"]
wedding = Wedding.where(location_id: user_params[:locationId])
roles.each do |role|
clazz = Kernel.const_get(role)
wedding.map(&:clazz).each do |member|
user_ids << member.ids
end
end
Respostas
2 PhiAgent Oct 09 2020 at 17:46
A seguir, passo uma série de métodos para os membros da matriz weddings:
weddings = Wedding.where(location_id: user_params[:locationId])
# array with methods you're interested in
methods=[:guests, :bride]
# looping through the weddings array
weddings.each do |wedding|
# looping through the methods array
methods.each do |method|
# for each wedding, passing every method to the wedding
members=wedding.public_send(method)
members.each do |member|
# storing the values
user_ids << member.ids
end
end
end
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino