如何使用gem迁移率按地区过滤记录?

时间:2018-09-26 14:31:52

标签: ruby-on-rails ruby mobility

我有一张表mobility_string_translations,但是我不知道该怎么去。

现在我有3条记录。两张德语记录,一张西班牙语记录。我只想获取那些德语的记录。

这不起作用:

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

1 个答案:

答案 0 :(得分:3)

首先您可能要有一列。(假设标题。)

在您的模型post.rb上,您将看到以下内容:

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

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

schema.rb,您会看到表格的移动性_ 字符串 _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”上所看到的那样,您可以在列中四处移动,以便准确找到所需的内容。