如何使用 gem 移动性按区域设置过滤记录?
How do I filter records by locale using gem mobility?
我有一个 table mobility_string_translations,但我不知道如何获取它。
现在我有3条记录。两张德语唱片和一张西班牙语唱片。我只想获取德语记录。
这不起作用:
all_de_posts = Post.i18n.find_by(locale: :de)
首先你可能有一个专栏。(假设标题。)
在你的模型上 post.rb
你会有这样的东西:
class Post < ApplicationRecord
extend Mobility
translates :title, type: :string, locale_accessors: [:en, :de]
end
类型对于获取 :de 记录(或 :en)很重要。
在 schema.rb
你会看到 table 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
那么现在在您的控制台上使用 locale: :de
查找您的记录
irb:> Post.all
irb:> Mobility::ActiveRecord::StringTranslation.where(locale: :de)
正如您在 schema.rb --> "mobility_string_translations" 中看到的那样,您可以随意调整列以准确找到您想要的内容。
我有一个 table mobility_string_translations,但我不知道如何获取它。
现在我有3条记录。两张德语唱片和一张西班牙语唱片。我只想获取德语记录。
这不起作用:
all_de_posts = Post.i18n.find_by(locale: :de)
首先你可能有一个专栏。(假设标题。)
在你的模型上 post.rb
你会有这样的东西:
class Post < ApplicationRecord
extend Mobility
translates :title, type: :string, locale_accessors: [:en, :de]
end
类型对于获取 :de 记录(或 :en)很重要。
在 schema.rb
你会看到 table 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
那么现在在您的控制台上使用 locale: :de
查找您的记录irb:> Post.all
irb:> Mobility::ActiveRecord::StringTranslation.where(locale: :de)
正如您在 schema.rb --> "mobility_string_translations" 中看到的那样,您可以随意调整列以准确找到您想要的内容。