1

我有一个表mobility_string_translations,但我不明白如何获得它。

现在我有三个记录。两份德文记录和一份西班牙文记录。我只想获取德语记录。

这不起作用:

all_de_posts = Post.i18n.find_by(locale: :de)
4

1 回答 1

3

首先,您可能有一个专栏。(让我们说标题。)

在您的模型上post.rb,您将拥有如下内容:

        class Post < ApplicationRecord
          extend Mobility
          translates :title,  type: :string, locale_accessors: [:en, :de]
        end     

类型对于获取 :de 记录(或 :en)很重要。

schema.rbwou 会看到一个表mobility_string_translations

  create_table "mobility_string_translations", force: :cascade do |t|
    t.string "locale", null: false
    t.string "key", null: false
    t.string "value"
    t.integer "translatable_id", null: false
    t.string "translatable_type", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["translatable_id", "translatable_type", "key"], name: "index_mobility_string_translations_on_translatable_attribute"
    t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_string_translations_on_keys", unique: true
    t.index ["translatable_type", "key", "value", "locale"], name: "index_mobility_string_translations_on_query_keys"
  end

现在在你的控制台上找到你的记录与语言环境: :de

irb:> Post.all

irb:> Mobility::ActiveRecord::StringTranslation.where(locale: :de)

正如您在 schema.rb --> "mobility_string_translations" 中看到的那样,您可以使用您的列来准确找到您想要的内容。

于 2018-09-26T19:16:51.427 回答