2011-05-17 19 views
0

與IndexTank細人一次長談之後,我並沒有對如何解決我的問題很確定,我想知道是否有人能幫助我。如何獲得Index-Tank做條件索引?

我有屬於用戶模型的文章模型。這篇文章模型還有一個名爲匿名的布爾屬性,如果設置爲true,則用戶可以選擇在沒有顯示其姓名的情況下發布文章。

Article 
belongs_to :user 
attr_accesible :anonymous, :user_id 

User 
has_many :articles 

我的問題是,如果文章發佈爲匿名。我不希望油罐車在作者姓名字段內搜索,但我希望它搜索其他字段。我試圖用if else語句做到這一點,我通常會把「tankit」塊放在那裏,但那不行。

有沒有一種方法,我可以把tankit塊到模型方法,並使用驗證回撥這個樣子?

def anon_index 
    if self.anonymous 
     tankit 'my_index' do 
     indexes VARIABLES ETC BUT NOT the user_ attributes 
     end 
    else # if anonymous is false 
     tankit 'my_index' do 
     indexes :title 
     indexes :body 
     indexes :user_penname 
     indexes :user_firstname 
     indexes :user_lastname 
     end 
    end 
    end 

我在想這個或把一個如果這裏的「tankit」塊聲明去else語句,但那些都似乎,除非我做錯了什麼。

回答

2

這個怎麼樣?:

class Article < ActiveRecord::Base 

tankit 'my_index' do 
     indexes :title 
     indexes :body 
     indexes :custom_penname 
     indexes :custom_firstname 
     indexes :custom_lastname 
end 

def custom_penname 
    if self.anonymous 
    'anonymous' 
    else 
    self.user_penname 
    end 
end 

def custom_firstname 
    #same for first name 
end 
def custom_lastname 
    #same for last name 
end 
end 

同樣的方法,不同的情景:

https://github.com/adrnai/rails-3-tanker-demo/blob/master/app/models/comment.rb

+0

工作就像一個夢。謝謝! – illogikal 2011-05-18 15:08:47