【发布时间】:2020-01-21 18:51:23
【问题描述】:
我正在尝试查询 mysql 数据库。我只需要返回外部数组中存在的值:
query_data = tours.select(:orders)
=> [#<Tour:0x007fd1b0972438 orders: [223597]>, ...]
我有一个如下所示的外部数组:orders = [223597, 223598]
现在,我正在使用 ruby 来过滤数据,但它并没有我想要的那么高效:
query_data = query_data.find_all do |data|
data.orders.any? { |o| orders.include?(o) }
end
所以我的问题是,我怎样才能检查数据库数组和订单数组,并且只返回那些 ID 存在于数据库数组中的记录,只使用 SQL?
我正在尝试这样的事情,但我认为这不是正确的做法:
query_data.where("JSON_EXTRACT('tour.orders', '$[*]') IN #{orders}")
另外,它只是直接不起作用。
版本:
Ruby: 2.3.1
mysql: mysql Ver 14.14 Distrib 5.7.29, for osx10.14 (x86_64) using EditLine wrapper
Rails: 5
【问题讨论】:
标签: mysql ruby activerecord ruby-on-rails-5