Как я могу объединить результаты записи в Rails? - PullRequest
1 голос
/ 13 января 2010

Итак, у меня есть два отдельных запроса:

tagged_items = Item.tagged_with(params[:s], :on => :tags)
searched_items = Item.find(:all, :conditions => ["MATCH(title) AGAINST (? IN BOOLEAN MODE)", "*#{params[:s]}*"])

Первый tagged_items использует плагин acts_as_taggable_on, чтобы найти все элементы, отмеченные XYZ.

Второй, searched_items, используется для поиска в таблице items поискового запроса.

Итак, как я могу объединить (и избежать дублирования) результаты этих двух?

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Проверьте named_scope. Второй запрос можно легко преобразовать в named_scope, я не уверен насчет первого, но если вы можете переписать его с помощью find, вы дома.

http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html

1 голос
/ 13 января 2010
items = (tagged_items + searched_items).unique

Но было бы намного лучше, если бы вы могли получить их одним запросом.

0 голосов
/ 13 января 2011

Этот подход ...

@items = tagged_items | searched_items

... было бы более целесообразно, если вы хотите использовать результаты этих запросов в представлении вместо работы с массивом, и также выполняет дедупликацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...