如何将方法传递给 Ruby Map

How to pass methods to Ruby Map

我有以下代码:

wedding = Wedding.where(location_id: user_params[:locationId])
wedding.map(&:guests).each do |member|
  user_ids << member.ids
end

在我的例子中 :guests 是一个活动记录 table,但我有一对我想通过 map 生成 user_ids

所以我想传递这样的方法数组:[guests, bride, etc etc]

如果我可以传递整个数组就更好了,否则如果我可以单步执行方法数组那也很棒。

有什么想法吗?

编辑: 我正在尝试这个但没有运气..我得到: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

下面,我将一组方法传递给数组 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