[英]Convert array to ActiveRecord::Relation
我為此查詢使用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
這個范圍之內?
我嘗試了Job.where(aray.map(&:id))
,但它對我不起作用。
我的解決方案是:
Job.where(id: array.map(&:id))
這可行。
干杯。
給定一個Active Records array
,您可以通過以下方式獲取ActiveRecord :: Relation:首先使用map
函數獲取記錄的ids
,然后使用.where
從模型中獲取它們。
在您的情況下:
Job.where(array.map(&:id))
1-在SQL中執行:將其作為原始SQL放在上面的SQL查詢中
要么
2-使用ruby進行排序:在數組上使用select
來獲取與您的條件匹配的記錄(所有具有真實狀態的記錄)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.