0

在 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)

所以我实际上想返回所有航班 where (trip_id = 31 and trip_section = 1) or (trip_id = 37 and trip_section = 2) or (trip_id = 40 and trip_section = 1),但对于任意二维数组。

我怎样才能做到这一点?

4

1 回答 1

1

您将不得不为此使用字符串 SQL 条件。就像是:

trip_conditions = trip_sections_array.map { "(trip_id = ? AND trip_section = ?)" }.join(" OR ")
Flight.where(trip_conditions, *trip_sections_array.flatten)

有关更多信息,请参阅有关纯字符串条件的 rails 指南

于 2013-04-10T00:46:19.690 回答