2

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

4

3 回答 3

3

我试过了Job.where(aray.map(&:id)),它对我不起作用。

我的解决方案是:

Job.where(id: array.map(&:id))

这行得通。

干杯。

于 2017-10-30T21:02:50.770 回答
1

给定一个arrayActive Records,您可以通过首先ids使用该map函数获取记录的,然后使用.where从模型中获取它们来获取 ActiveRecord::Relation。

在你的情况下:

Job.where(array.map(&:id))

于 2017-09-22T18:14:20.903 回答
0

1 - 在 SQL 中执行:将其作为原始 SQL 放在上面的 SQL 查询中

或者

2 - 在 ruby​​ 中进行排序:select在您的数组上使用以获取符合您的标准的记录(所有具有真实状态的记录)

于 2016-04-04T10:59:47.653 回答