1

如何将查询的结果集限制为具有当前语言环境(或回退)翻译的记录,同时忽略任何没有的记录?

例如,给定一个语言环境:fr,我只想Article.all返回有法语翻译的文章:'fr-FR'- 我想返回任何翻译语言环境为:'fr-FR'or的记录:fr的记录,但没有其他记录。

Article.joins(:translations).where(article_translations: { locale: [I81n.locale] })适用于单个位置,但是后备呢?

4

1 回答 1

1

(目前)没有与后端无关的方法来做到这一点。这个问题将是实现它的一步。

但是,使用表后端,当您调用 时join_translations,您使用的是内部连接,因此只会连接当前语言环境中具有翻译模型的记录,并且不会返回当前语言环境中没有任何翻译的任何文章。因此,只需Ariticle.i18n.join_translations清除在当前语言环境中没有翻译的任何文章,而不做任何其他事情。

但是,这目前不包括后备。为此,您必须自己弄清楚 SQL,或者等到该功能实现(可能至少几个月后)。

于 2018-02-13T09:33:55.113 回答