如何根据选择进行排名?

时间:2019-11-22 09:29:51

标签: ruby-on-rails activerecord

对于预订,我想计算extra_guests的价格(例如,房价中未包含客人)。

  • 因此,我想让所有来宾预订(reservation_guests完成
  • 获取其age_table 完成
  • 根据他们的age_tables的列:rank排列来宾。 问题

目标是使用排名开始计算age_table排名最低的Extra_Guest的extra_guest_price,以防标准预订中未包含客人的情况。

问题

我只需要特定的age_tables范围即可根据:rank进行排名。我目前的设置是错误的,因为我无法在数组上使用order,但是我不确定如何构造它才能使其工作。

def total_extra_guest_price(reservation, res_guest)
    sum_guest = 0
    sum_amount_guests = 0
    age_table_list = []
    reservation.reservation_extra_guests.each do |guest|
      sum_amount_guests += guest.extra_guest_quantity
    end

    # persons included vs persons reservation
     #if more persons
    if reservation.room.room_category.persons_included < sum_amount_guests

      #count number of too many persons
      extra_persons = sum_amount_guests - reservation.room.room_category.persons_included

      # iterate over extra_guests belonging to reservation to get age_tables
      reservation.reservation_extra_guests.each do |extra_guest_item|
        age_table_list << extra_guest_item.extra_guest.age_table
      end

      #rank age tables, so lowest rank can be used to calculate price. Issue!!!
      age_table_list.order(:rank)
    end
end

1 个答案:

答案 0 :(得分:1)

对于您的问题,我不是100%清楚,因此我的建议可能不是最佳解决方案。但是您可以尝试sort_by()

age_table_list.sort_by{ |age_table| age_table.rank }

了解更多here