Атрибуты, переведенные с помощью globalize gem, не работают с формой поиска - PullRequest
0 голосов
/ 27 сентября 2019

Я использую этот драгоценный камень для перевода атрибутов моей модели

Это моя модель:

class Category < ActiveRecord::Base
  translates :name

  Globalize.fallbacks = {:es => [:es, :en, :pt], :en => [:en, :es, :pt], :pt => [:pt, :es, :en]}
  globalize_accessors
end

У меня есть форма с поиском для поискапо имени

, но это не работает для меня, потому что, когда я беру свои данные из базы данных по модели, у меня нет атрибута имени

  def fetch_categories
    I18n.locale = @language

    categories = Category.where(event_id: @event.id).order("#{sort_column} #{sort_direction}")
    categories = categories.page(page).per_page(per_page)
    if params[:search][:value].present?
      categories = categories.where("name like :search", search: "%#{params[:search][:value]}%")
    end
    categories
  end

categories возвращаетя

#<ActiveRecord::Relation [#<Category id: 1, client_id: 1, event_id: 1, color: "#265BBD">, #<Category id: 2, client_id: 1, event_id: 1, color: "#E35274">]>

Как я могу получить атрибут имени в моем запросе?

У меня есть categories и category_translations таблицы

1 Ответ

0 голосов
/ 27 сентября 2019

Я наконец нашел решение, оно простое:

  def fetch_categories
    I18n.locale = @language

    categories = Category.joins(:translations).where(event_id: @event.id).order("#{sort_column} #{sort_direction}")
    categories = categories.page(page).per_page(per_page)
    if params[:search][:value].present?
      categories = categories.where("category_translations.name like :search", search: "%#{params[:search][:value]}%")
    end
    categories
  end
...