4

すばらしい Globalize3 gem に問題があります。今のところ、en と ru の 2 つの言語を使用しています。そして :ru は次のように :en にフォールバックします

#/config/initializers/globalize.rb
Globalize.fallbacks = {:ru => [:ru, :en]}

私のコントローラーでは、翻訳されたレコードのコレクション全体を名前の翻訳または翻訳のフォールバック値でソートしようとしています。しかしwith_translations()、私にそのような機会を与えるようには見えません!

Country.with_translations(:ru).order('country_translations.name ASC')
#this filters out those who have no :ru translations (BUT THEY SHOLD USE FALLBACKS!)

すべてのレコードを取得するには、ロケールの配列を渡すことができます:

Country.with_translations([:ru, :en]).order('country_translations.name ASC')
#but this completely ruins the sorting order (DAMN NOTHING IS SORTED)

そして、私が望む唯一の簡単なことは、フォールバックを取得して、すべてをまとめてソートすることです! したがって、利用可能な名前の値のみでソートされたすべてのレコードを取得する必要があります。

何か方法はありますか?

4

2 に答える 2

19

Globalize3ソースを掘り下げることでこれを解決しました。with_localesスコープを使用して、適切なロケールが存在するレコードを取得します。私はそれらすべてが必要でした:

Model.includes(:translations).
       with_locales(I18n.available_locales).
       order('model_translations.name ASC')

それが誰かを助けることを願っています!

于 2013-04-19T12:27:19.643 に答える