2011-06-19 7 views
5

Uygulamaları dizinlerim ve genel bakış açılarımın birçoğunu oluşturmak için Sunspot'u kullanıyorum.Sunspot: çocuk modelini güncellerken ana modelin kuvvet dizini

Bu uygulamada ebeveyn/çocuk bire-çok ilişkisi olan 2 modelim var. Sunspot I ile bir ebeveynin sahip olduğu childs sayısını indeksleyin, böylece bu sıralama, kapsam belirleme için kullanılabilir.

Ancak, çocuk modelini değiştirdiğimde, üst model otomatik olarak yeniden dizinlenmez (değiştirilmediği için). . Çocuğun üzerinde bir call_back aracılığıyla bir parent.save zorlamak da dizini zorlamaz. Ben

uzak kesmek başlamadan Yani önce: Bir çocuk modeli eklendi/değiştirildi aldığında

Ne Sunspot ebeveyn sınıfı bir dizin eylemi zorlamak için en iyi yolu olurdu?

cevap

7

Şu anda aynı sorunu yaşıyordum. API documentation for Sunspot'a baktıktan sonra, Sunspot, modelleri yeniden dizilenecek bir forma zorlayan bir yöntemle index() yöntemini genişletiyor gibi görünüyor.

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 
: Bu düşünceyle

, bu veritabanına üzerine depolandığı zaman ebeveyni anda için, çocuk modelinin after_save callback'inde içine çengel meselesi olmalıdır
İlgili konular