如何将查询的结果集限制为具有当前区域设置(或回退)转换的记录,同时忽略任何不存在的记录?
例如,如果区域设置为:fr
,我只希望Article.all
返回仅具有法语翻译的文章。与:'fr-FR'
相同 - 我想返回任何翻译区域设置为:'fr-FR'
或:fr
的记录,但没有其他记录。
Article.joins(:translations).where(article_translations: { locale: [I81n.locale] })
适用于单个位置,但是回退呢?
答案 0 :(得分:1)
目前没有与后端无关的方法(目前)。 This issue将是实现它的一步。
但是,使用表格后端,当您拨打User.update({
_id: user_id,
}, {
$push: {
leads: lead_to_add,
},
});
时,您正在使用内部联接,因此只会加入当前区域设置中包含翻译模型的记录,以及任何文章如果没有,将不会返回当前语言环境中的任何翻译。因此,join_translations
只会清除所有在当前区域设置中没有翻译的文章,而不会做任何其他事情。
但是,目前还没有包括回退。为此,您必须自己弄清楚SQL,或者等到该功能实施(至少可能不会持续几个月)。