Обновление 2
Cama::PostType.first.posts.joins(:custom_field_values)
.where("cama_custom_fields_relationships.custom_field_slug = ? AND
cama_custom_fields_relationships.value LIKE ?","localization",
"%Paris%").merge(Cama::PostType.first.posts.joins(:custom_field_values)
.where("cama_custom_fields_relationships.custom_field_slug = ? AND cama_custom_fields_relationships.value = ?","type-localization", "2"))
Почему это слияние не работает?
Возвращает тот же результат, когда выполняется отдельно ... Слияние должно работать как пересечениепоэтому общая часть должна быть результатом.Я не понимаю
Обновление
Я постараюсь спросить более концептуально.
У меня есть модель B, в которой есть слаг: текст, значение: текст, принадлежат: Модель A
У меня есть модель A, у которой есть имя: строка, has_many: Модель B
@posts_one = Я ищу модель B, где slug = "что-то", значение = "город"
@ posts_two = Я ищу модель B, где slug = "настроение", значение = "good"
У меня есть 2 результата, основанные на различных параметрах.Обе принадлежат: модель A
Теперь я хочу вернуть только общее belongs_to
.так что если
@ posts_one вернет мне 20 результатов с model_a_ids
@ posts_two вернет мне 20 результатов с model_a_ids
Я хочу вернуть только общие model_a_ids из этих 2 запросов ипрямо сейчас, чтобы найти сообщения.Я пытаюсь сделать это одним запросом, но не знаю, возможно ли это
Оригинальное сообщение
Я использую Camaleon CMS и пытаюсь создать фильтры на основе дополнительных "настраиваемых полей».Я думаю, что для ответа на этот вопрос вам не обязательно знать эту CMS.
Я хочу найти общую часть из 2 запросов или сделать ее в одном запросе (это было бы лучше всего)
У меня есть
@posts = Cama::PostType.first.posts.includes(:custom_field_values)
@param_localization = "Paris"
@param_type_localization = "House"
@posts_one = @posts.merge(CamaleonCms::CustomFieldsRelationship.
where("cama_custom_fields_relationships.custom_field_slug = ? AND
LOWER(cama_custom_fields_relationships.value) LIKE ?", "localization",
"%#{@param_localization}%"))
puts @posts_one.count => 2
@posts_two = @posts.merge(CamaleonCms::CustomFieldsRelationship.where(custom_field_slug:
"type-localization", value: @param_type_localization))
puts @posts_two.count => 2
Вопрос в том, как я могуобъединить это или сделать один запрос?Когда я сделал это за один where clause
, он возвращает мне 0 результатов, так как мне нужно найти 2 разных отношения с настраиваемыми полями, которые имеют разные значения и слагов, но имеют отношение к сообщениям через: custom_fields_values, поэтому я должен сделать 2 запроса, я думаю (как и я).Сначала я нахожу customFieldRelationship с slug = localization
, а затем с slug = type_localization
, а затем мне нужно найти common part
Я пытался @result = @posts_one.merge(@posts_two)
, но тогда я не получил никакого результата.Я думал, что это вернет мне " общую часть " ассоциации, что означает 2 результатов
Как я могу объединить это, чтобы найти меня сообщения, которые удовлетворяют обоим запросам?
Дайте мне знать, если я объяснил свою проблему недостаточно хорошо.