Какой правильный синтаксис в блоке Sunspot.search для возврата сообщений, которые соответствуют массиву category_ids - PullRequest
1 голос
/ 03 февраля 2012

Я использую Sunspot 1.3.0 в проекте Rails.

Post.search do
  with(:category_ids, [1, 3, 5])
end

будет соответствовать сообщениям с категорией 1, 3 или 5.

Какой правильный синтаксиссопоставлять посты с категориями ровно 1, 3 и 5?

Например, сообщения, гдеcategory_ids = [1] - не совпадаетcategory_ids = [1, 3] - не совпадаетcategory_ids = [1, 3, 5] - соответствует category_ids = [1, 3, 5, 7] - не соответствует

Я пытался

with(:category_ids).equal_to([1,3,5])

, но это дает мне следующую ошибку: неопределенный метод `gsub 'для [" 1"," 3 "," 5 "]: Array

1 Ответ

1 голос
/ 06 февраля 2012

Итак, я решил использовать all_of для решения этой проблемы.В случае, если это поможет кому-то еще, это то, что я сделал:

with(:category_ids).all_of([1,3,5])

Это будет соответствовать категориям сообщений [1,3,5], но также и сообщениям с любыми дополнительными категориями, например [ 0, 1,3,5, 7 ] тоже будут совпадать.

Как только Sunspot вернул свой набор результатов, я отфильтровал сообщения, которые не совпадали точно.

Это делает то, что я хочу, но я надеялся, что был более краткий способ сделать это.

...