将数组转换为ActiveRecord :: Relation

时间:2016-04-04 09:13:44

标签: ruby-on-rails activerecord find-by-sql

我正在使用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进行操作?

3 个答案:

答案 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来获取符合条件的记录(所有具有真实状态的记录)