Как я могу использовать searchkick со схемами/квартирой pgSQL и циклически переключаться между схемами?

В настоящее время я пытаюсь использовать searchkick в своем многопользовательском приложении Rails 4, которое использует схемы Apartment и pgSQL для обработки аренды. Однако я не могу заставить searchkick работать. Я не совсем уверен, что я делаю неправильно, но я думаю, что это может быть так, что когда я переиндексирую, он переиндексирует только одну схему.

Я думаю, что мне нужно перебрать каждую схему, но я не знаю, как это сделать в квартире. Кажется, они делают это автоматически для миграции, но я пытаюсь заставить его работать с searchkick. Я хочу отредактировать приведенную ниже задачу rake от searchkick, чтобы сделать это:

require 'rake'

namespace :searchkick do 

    task :reindex => :environment do
    if ENV["CLASS"]
      klass = ENV["CLASS"].constantize rescue nil
      if klass
        klass.reindex
      else
        abort "Could not find class: #{ENV["CLASS"]}"
      end
    else
      abort "USAGE: rake searchkick:reindex CLASS=Product"
    end
  end

end

Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения


person David Mckee    schedule 15.08.2014    source источник
comment
Привет @ david-mckee, я пытаюсь сделать то же, что и ты, мультиарендное приложение rails + searchkick. Также используя квартирный драгоценный камень. У меня вопрос: как разделить поисковые индексы для разных арендаторов? Проблема здесь в том, что у нас могут быть совершенно разные объекты в арендаторах с одним и тем же идентификатором.   -  person tommi    schedule 25.08.2014
comment
@tommi, кажется, делает это автоматически. Я делаю еще несколько тестов по этому поводу, но пока это не кажется мне проблемой. Дайте мне знать, если вы можете выяснить, может ли это произойти.   -  person David Mckee    schedule 26.08.2014
comment
@tommi Я еще проверяю, и кажется, что это проблема. Результаты не будут отображаться, но они появятся в разбиении на страницы. Я думаю, что могу каким-то образом изменить метод поиска, который я использую для searchkick, или, может быть, найти способ игнорировать нерелевантные поиски в моей нумерации страниц.   -  person David Mckee    schedule 26.08.2014
comment
Спасибо за вашу помощь! Я получил ответ от создателя searchkick, что это невозможно. github.com/ankane/searchkick/issues/268#issuecomment-53672954 Теперь я мог бы поискать какие-нибудь альтернативные патчи для обезьян.   -  person tommi    schedule 28.08.2014


Ответы (1)


Я смог понять это. Мне пришлось сделать следующее и добавить сюда задание «Квартира»:

require 'rake'
require 'apartment/migrator'

namespace :searchkick do 
    task :reindex => :environment do
        tenants.each do |tenant|

            Apartment::Tenant.switch(tenant)
            p 'switched'
        if ENV["CLASS"]
          klass = ENV["CLASS"].constantize rescue nil
          if klass
            klass.reindex
          else
            abort "Could not find class: #{ENV["CLASS"]}"
          end
        else
          abort "USAGE: rake searchkick:reindex CLASS=Product"
        end
    end
    end

end
person David Mckee    schedule 15.08.2014