【问题标题】:Sunspot: force index of parent model when updating child model太阳黑子:更新子模型时父模型的强制索引
【发布时间】:2011-09-18 03:19:14
【问题描述】:

我正在使用 Sunspot 生成大量应用索引和概览。

在这个应用程序中,我有 2 个具有父/子一对多关系的模型。使用 Sunspot,我可以索引父母拥有的孩子的数量,因此可用于排序、范围界定等。

但是,当我更改子模型时,父模型不会自动重新索引(因为它没有更改)。通过对孩子的回调强制 parent.save 也不会强制索引。

所以在我开始破解之前:

当更改/添加子模型时,在 Sunspot 中强制对父类执行索引操作的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 sunspot sunspot-rails


    【解决方案1】:

    我现在遇到了同样的问题。在查看 API documentation for Sunspot 之后,似乎 Sunspot 使用 index() 方法扩展了模型,该方法强制重新索引实例。

    考虑到这一点,应该只是挂钩到子模型的 after_save 回调,以便在将其存储到数据库时重新索引父模型:

    class Parent < ActiveRecord::Base
      has_many :children
    end
    
    class Child < ActiveRecord::Base
      belongs_to :parent
      after_save :reindex_parent!
    
      def reindex_parent!
        parent.index
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多