我正在使用find_by_sql
进行此查询,并返回一个数组。
我想做Job.hongkong_jobs.where(status: true)
之类的事情,但我不能因为它是一个数组。
scope :hongkong_jobs, -> { find_by_sql "SELECT DISTINCT(jobs.*) FROM" + Task.near([22.275754, 114.163056], 35.17936816723013, :units => :km).joins(:job).where(jobs: {status: [:open,:new]}).to_sql.split("FROM").last.split("ORDER").first + "ORDER BY start_at ASC" }
所以我的问题是:如何将其转换为有效的记录对象,以便我可以在此范围内.where
进行操作?
答案 0 :(得分:3)
我试过Job.where(aray.map(&:id))
,而不是为我工作。
我的解决方案是:
Job.where(id: array.map(&:id)), and it works.
干杯。
答案 1 :(得分:1)
给定array
活动记录,您可以通过首先使用ids
函数获取记录的map
来获取ActiveRecord :: Relation,然后使用.where
从模型中获取它们。
在你的情况下:
Job.where(array.map(&:id))
答案 2 :(得分:0)
1 - 在SQL中执行:将它放在上面的SQL查询中作为原始SQL
OR
2 - 在ruby中进行排序:在数组上使用select
来获取符合条件的记录(所有具有真实状态的记录)