2012-09-17 30 views
2

我在我的Rails 3中有一個名爲Article的模型,我用rake environment tire:import CLASS='Article' FORCE=true來做索引。但我只希望與字段的文章等於false被索引。我怎樣才能實現它?如何用條件導入索引

回答

1

Above Solution似乎並沒有工作。

我們傳遞給CLASS的環境變量只用於查找輪胎索引和計算total進度條。檢查Line 97: total = klass.count rescue nilLine 49: klass.tire.import(params) do |documents|https://github.com/karmi/retire/blob/master/lib/tire/tasks.rb

唯一的工作解決,我發現(與mongoid)是,

Tire.index "articles" do 
    import Article.scoped(:conditions => {:deleted => false}) 
end 

這是說Article.index.import(Article.scoped(:conditions => {:deleted => false}))由果報工作者的回答@https://github.com/karmi/tire/issues/458

但上述方法在有利好方法是當我們需要自定義映射時。像下面一樣

Tire.index "articles" do 
    import Article.scoped(:conditions => {:deleted => false}) do|documents| 
    documents.map{|document| document[:content].downcase!; document} 
    end 
end 
0

這在最新的輪胎寶石中並不適用於我。它在Tire v0.5.4中工作,但不在v0.6.2中。所以,要創建一個rake任務,我這樣做...

desc 'Index articles' 
task :index => :environment do 
    Article.where(:deleted => false).find_in_batches do |batch| 
    Tire.index(Article.index_name).import batch 
    end 
end 

使用find_in_batches建議在readme