Searchkick 2 вложение 'has_many'

У меня 3 класса.

Product, Command, CommandOption

У меня есть поиск, который работает очень хорошо. Поиск по продукту. Но я хочу выполнить поиск по CommandOption и вернуть свой объект Product, как это сделать?

class Product < ActiveRecord::Base


extend FriendlyId
  friendly_id :slug, use: :slugged



searchkick

  has_many :commands

  def search_data
    {
      name: name,

      #commands (has_many)
      command_captions: commands.map(&:caption).join(' '),
      command_numbers: commands.map(&:number).join(' '),

      #if I write here, then get error
      #command_option_caption: command_options.map(&:caption).join('')
    }
  end

end

class Command < ActiveRecord::Base
  belongs_to :product

  has_many :command_options
end

class CommandOption < ActiveRecord::Base
  belongs_to :command
end

Извините за мой английский


person Даниэль Сайфулин    schedule 02.05.2016    source источник


Ответы (1)


Я нашел решение!

просто в модели Product добавлено отношение

class Product < ActiveRecord::Base
  searchkick

  has_many :commands
  has_many :command_options, through: :commands


  def search_data
    {
      name: name,

      #commands (has_many)
      command_captions: commands.map(&:caption).join(' '),
      command_numbers: commands.map(&:number).join(' '),
      #for commandoption model
      command_option_captions: command_options.map(&:caption).join(' ')
    }
  end

end
person Даниэль Сайфулин    schedule 02.05.2016