如何在algolia rails中设置objectID的值?

时间:2015-07-30 20:19:27

标签: ruby-on-rails-4 indexing algolia

我在我的rails应用程序中使用algolia gem。我目前正在将3种不同的模型合并为一个索引,以便对我们的案例研究,博客文章和视频进行综合搜索。

我遇到了麻烦,索引一个模型将覆盖另一个模型中的对象,因为Algolia似乎使用rails生成的ID映射到objectID列。

posts.rb

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}"

这个虚拟属性样式不起作用,所以我试图在db上创建一个实际的字符串列并重新索引这种方式无济于事。

如果有人在这里有任何想法,我会非常感激,而且我一直在低迷。

1 个答案:

答案 0 :(得分:3)

您可以在每个模型中使用custom ObjectID

在您的模型中

def custom_algolia_id
  "v#{id}"
end

algoliasearch id: :custom_algolia_id do
  attribute :title, :length
end