在Ruby on Rails中,给定一个值数组,我可以选择具有该数组中值的属性的所有记录:
trip_array = [31, 37, 40]
@flights = Flight.where(trip_id: trip_array)
这为我提供了trip_id为31,37或40的所有航班的列表。
但是,我需要选择一对值。我希望能做到这样的事情:
trip_sections_array = [[31, 1], [37, 2], [40, 1]]
@flights = Flight.where([:trip_id, :trip_section] => trip_section_array)
因此,我有效地希望返回(trip_id = 31 and trip_section = 1) or (trip_id = 37 and trip_section = 2) or (trip_id = 40 and trip_section = 1)
所有航班,但是对于任意二维数组。
我该如何做到这一点?
答案 0 :(得分:1)
您将不得不求助于使用字符串SQL条件。类似的东西:
trip_conditions = trip_sections_array.map { "(trip_id = ? AND trip_section = ?)" }.join(" OR ")
Flight.where(trip_conditions, *trip_sections_array.flatten)
有关详细信息,请参阅pure string conditions
上的导轨指南