【发布时间】:2020-01-04 14:49:04
【问题描述】:
我有一个汽车数据库,这些汽车具有特定的功能(例如座椅加热、LED 灯、交流电……)。
模型是这样设置的:
class Car < ApplicationRecord
has_many :car_key_features
has_many :key_features, through: :car_key_features
end
class CarKeyFeature < ApplicationRecord
belongs_to :car
belongs_to :key_feature
end
class KeyFeature < ApplicationRecord
has_many :car_key_features
has_many :cars, through: :car_key_features
end
我现在想要获得所有具有特定功能的汽车。例如,我想获取所有具有标识符“座椅加热”和“led-lights”功能的汽车(但它也可能具有其他功能)。
我使用以下查询进行了尝试,但这为我提供了至少具有其中一项功能的所有汽车,而不是全部(因为它会导致 SQL“IN”查询):
scope :by_key_features, ->(identifiers) { joins(:key_features).where(key_features: { identifier: identifiers }).group('cars.id') }
对此的任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby activerecord ruby-on-rails-6