Ransack 搜索和翻译

Enr*_*art 1 search translation ruby-on-rails ransack globalize

我正在尝试对与翻译表有关联的模型进行搜查。

翻译由 globalize gem 管理。

问题是当我尝试在 :name 列的模型表中使用 ransack 进行搜索时,它什么也没显示,因为 :name 信息存储在另一个表中。

任何线索如何在关联翻译表中进行搜查搜索?我知道有可能使用 ransackers,但我不知道要放入哪些代码。

Arj*_*jan 6

虽然@rlarcombe 他的答案在这种特定情况下有效,但您会失去 ransack 提供的所有谓词(eq、cont 等),并且基本上是自己编写搜索查询。

Globalize 将转换表添加为关联,ransack 通过在可搜索属性前加上关联表名来提供搜索关联表的能力。

对于您的情况,这会起作用,并且仍然允许您使用所有 ransack 的谓词。

User.with_translations(I18n.locale).ransack(translations_name_eq: 'John')
Run Code Online (Sandbox Code Playgroud)

您可以通过替换谓词后缀来使用其他谓词cont(如(contains))进行ILIKE匹配:

User.with_translations(I18n.locale).ransack(translations_name_cont: 'John')
Run Code Online (Sandbox Code Playgroud)