我的Rails 3中有一个名为Article的模型,我使用rake environment tire:import CLASS='Article' FORCE=true
来做索引。但我只希望将字段deleted
等于false的文章编入索引。我该如何实施呢?
答案 0 :(得分:2)
您可以使用范围方法。
rake environment tire:import CLASS='Article.scoped(:conditions => {:deleted => false})' FORCE=true
回答
答案 1 :(得分:1)
Above Solution似乎不起作用。
我们传递给CLASS
环境变量的内容仅用于查找轮胎索引并计算进度条的total
。查看https://github.com/karmi/retire/blob/master/lib/tire/tasks.rb
Line 97: total = klass.count rescue nil
和Line 49: klass.tire.import(params) do |documents|
我找到的只有工作解决方案(有mongoid),
Tire.index "articles" do
import Article.scoped(:conditions => {:deleted => false})
end
与karmi @ https://github.com/karmi/tire/issues/458
回答的Article.index.import( Article.scoped(:conditions => {:deleted => false}))
一样好
但使用上述方法的优点是我们需要自定义映射。如下所示
Tire.index "articles" do
import Article.scoped(:conditions => {:deleted => false}) do|documents|
documents.map{|document| document[:content].downcase!; document}
end
end
答案 2 :(得分:0)
在最新的Tire gem中,这对我没用。它确实在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
建议在readme上使用find_in_batches。