Я использую globalize gem , чтобы добавить сводку на мой сайт
, и у меня сложная проблема, у меня есть поисковая система для фильтрации действий
этодве мои модели:
class Activity < ActiveRecord::Base
belongs_to :category
translates :name, :description
end
class Category < ActiveRecord::Base
has_many :activities
translates :name
end
Я сгенерировал их таблицы с гемом, у меня есть activities
и activity_translations
, categories
и category_translations
Поля, которые я хочуtranslate (вы можете видеть в их моделях) находятся в их таблицах перевода, если я хочу найти activities
или categories
по имени, я должен искать их в их таблицах перевода
для действий, это легко:
activities = Activity.with_translations.where(event_id: event_id)
activities = activities.where('activity_translations.name LIKE :query', query: "%#{query}%")
но моя проблема в том, что я хочу отфильтровать activities
по name
и categories
по name
с тем же запросом, для этого мне нужно ввести их таблицы перевода,так же, как категории в действиях являются необязательными
я пытаюсь это:
activities = Activity.with_translations.where(event_id: event_id)
activities = activities
.joins("LEFT OUTER JOIN categories ON activities.category_id = categories.id INNER JOIN category_translations ON category_translations.category_id = categories.id")
.where('activity_translations.name LIKE :query OR activity_translations.description LIKE :query OR category_translations.name LIKE :query', query: "%#{query}%")
но это не работает, просто возвращает мне действия, которые имеют категории
какие-либо предложения?