思考Sphinx:索引翻译属性

时间:2013-04-13 11:57:20

标签: ruby-on-rails thinking-sphinx

我有一个带有Globalize3名称转换的好模型,所以: good.name(:en)返回良好的名字。 good.name(:ru)返回rus好名字。 我需要按字母顺序对Good进行排序,依赖当前语言,所以(我认为是这样)我需要制作

index ... as :en_name
index ... as :ru_name

然后搜索(命令:“en_name asc”)例如。

我有:

good.translations
=> [#<Good::Translation id: 5, good_id: 3, locale: "**ru**", name: "**Аурелия** ", description: "\"Lorem ipsum dolor sit amet, consectetur adipisicin...", created_at: "2012-12-24 13:43:37", updated_at: "2012-12-24 13:43:37">,
 #<Good::Translation id: 6, good_id: 3, locale: **"en"**, name: "**Aurelia**", description: "\"Lorem ipsum dolor sit amet, consectetur adipisicin...", created_at: "2012-12-24 13:43:37", updated_at: "2012-12-24 13:43:37">]

并且需要为每个商品做索引en_name和ru_name。 这样的事情:

indexes "translations(:name) where locale='en'", :as => :en_name, sortable: :insensitive

但它不起作用。怎么做?

1 个答案:

答案 0 :(得分:0)

WHERE子句不应该是字段或属性定义的一部分 - 因为它们位于基础SQL查询的SELECT子句中。

但是,您可以在索引定义中轻松指定自己的WHERE条件:

indexes translations.name
# other fields and attributes

where "translations.locale = 'en'"