アソシエーション内に存在する順序要素は、最初に選択されたアソシエーションに存在する要素になります。 つまり、ほとんどのassosietionsによる要素の順序は、指定されたリストから存在します。 これは複雑なので、ここでは動作例ですが、スローなものです。Railsほとんどの条件で注文レコードを満たす
ほとんどのドライバーは彼らに
# we have some ids of driver seleted by user
dynamic_drivers_ids = [1,2,3,100,5]
@cars = Car.all.includes(:driving_levels)
@cars.sort_by {|e| (e.driving_level.map(&:driver_id) & dynamic_drivers_ids).size * -1 }
を駆動させることができることにより、我々はそれが唯一の20台で、ロードする約1秒かかり、車をソートしたいです。 しかし、今では100台の車で状況があり、計算には数十年かかります。
どのように私たちはそのような注文のSQLリクエストを書くことができますか?
Car.includes(:driving_levels).order("driving_level.id IN = ? AND driving_level.size", dynamic_drivers_ids)
DBテーブルは次のようになります:そのは動作していない 、しかし、いくつかのロジックを示し
class Car
has_many :driving_levels
has_many :drivers, through: driving_levels
class DrivingLevel
belongs_to :car
belongs_to :driver
class Driver
has_many :driving_levels
has_many :cars, through: driving_levels
あなたのデータベースとは何ですか? –
'cars belongs_to driving_level'と思われます。ですから、 'driving_level.map(&:driver_id)'を見るのは奇妙です。モデルコードを提供してください。 –
テーブル – GEkk