簡體   English   中英

將數組轉換為ActiveRecord :: Relation

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM