2012-05-04 50 views
4

特定的記錄,我有兩個型號重新編制只有一個與太陽黑子

class User < ActiveRecord::Base 
    has_many :posts 

    searchable do 
    text :post_titles 
    end 

    def post_titles 
    posts.map &:title 
    end 
end 

class Post < ActiveRecord::Base 
    belongs_to :user 
end 

的問題是,當我更新帖子太陽黑子不更新相關的用戶索引的稱號,這是不是新的數據進行搜索。如果我做User.index它解決了問題,但花費了太多時間。是否有更好的解決方案來更新子記錄更改的父記錄索引(如reindex只是父記錄,而不是所有用戶)?

回答

10

太陽黑子提供了一個實例index()方法,用於索引一條記錄。

我所做的是

class Post 

    belongs_to :user 
    after_save :update_user_index 

private 

    def update_user_index 
    user.index 
    end 
end 

如果運行這個控制檯,並想馬上看到結果,稱Sunspot.commit

+0

爲什麼我總能找到一個解決方案,幾分鐘後我問一個問題在StackOverflow:\ – Bohdan

+1

傑夫阿特伍德已經討論了[這種現象](http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html)。乾杯! – aitchnyu

+0

爲什麼你必須做一個Sunspot.commit?我有這個代碼在我的應用程序中運行,但我沒有看到任何更改,直到我在控制檯中運行Sunspot.commit。爲什麼只有從控制檯上才需要這個功能? – joncodo