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

アクティブ レコードの が与えられた場合、最初に関数を使用してレコードの を取得し、次に を使用してモデルからレコードをフェッチするarrayことにより、ActiveRecord::Relationを取得できます。idsmap.where

あなたの場合:

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

于 2017-09-22T18:14:20.903 に答える
0

1 - SQL で実行: 上記の SQL クエリに生の SQL として入れます

また

2 - ルビーでソートをselect行います: 配列で使用して、条件に一致するレコードを取得します (真のステータスを持つすべてのレコード)。

于 2016-04-04T10:59:47.653 に答える