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

Я использую драгоценный камень algolia в своем приложении rails. В настоящее время я объединяю 3 разные модели в один индекс для комбинированного поиска наших тематических исследований, сообщений в блогах и видео.

У меня возникли проблемы, так как индексация одной модели перезапишет объекты из другой модели, поскольку Algolia, похоже, использует сгенерированный идентификатор rails для сопоставления со столбцом objectID.

посты.рб

algoliasearch auto_index: false, if: :open?, index_name: "combined_#{Rails.env}" do
    attribute :objectID do
      "p#{id}"
    end
end

video.rb и case_studies.rb

Точно так же я пытаюсь установить attribute :objectID to "v#{id}" для видео, а также установить attribute :objectID to "c#{id}" для тематических исследований.

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

Если у кого-то есть какие-либо идеи здесь, я был бы очень признателен, и я иссякаю.


person Thomas    schedule 30.07.2015    source источник


Ответы (1)


Вы можете использовать пользовательский ObjectID внутри каждой вашей модели.

Внутри вашей модели

def custom_algolia_id
  "v#{id}"
end

algoliasearch id: :custom_algolia_id do
  attribute :title, :length
end
person Pierre Urban    schedule 30.07.2015