У меня следующая настройка
class Cake
has_and_belongs_to_many :ingredients # through a join table
end
class Ingredient
# secret_id , optional integer column.
end
Я получаю несколько секретных идентификаторов. Я хочу сгенерировать запрос, который возвращает Cakes, только если я смогу получить все ингредиенты.
Cake A:
Ingredient A -> secret id -> 1
Ingredient B -> secret id -> nil
Cake B:
Ingredient C -> secret id -> 3
Ingredient D -> secret id -> nil
Допустим, мы получили запрос со следующими параметрами: [3,4,5]
Мой текущий запрос выглядит так
Cake.includes(:ingredients).where(ingredients: { secret_id: secret_id_params + [nil] })
Проблема в том, что он вернет и торт A, и торт B. Он вернет торт A, потому что у него есть нулевой секретный идентификатор в одном из его ингредиентов. Я не хочу возвращать торт А, потому что не нашел всех ингредиентов.