我尝试了globalize gem,但这似乎是一个很大的开销。大多数时候我只需要翻译一个属性。我正在使用postgreSQL而宁愿使用hstore。这样我就不会得到额外的表格,性能应该至少和好一样好。
有没有使用这种方法的宝石,或者这是否意味着自定义开发?
答案 0 :(得分:1)
好像您正在搜索 hstore_translate gem 。我没有对它进行测试,但它似乎完全符合您的描述:
使用PostgreSQL的hstore数据类型,使用Rails I18n库进行ActiveRecord模型/数据转换。它提供了一个受Globalize3启发的界面,但不需要维护单独的转换表。
答案 1 :(得分:0)
我一直在使用hstore_translate gem并喜欢它。
例如,假设您有一个包含title:string
和content:text
的项目模型架构。如果您希望翻译content
,则需要做的就是创建迁移:
class AddTranslationToProjects < ActiveRecord::Migration
def change
add_column :projects, :title_translations, 'hstore'
end
end
并在project.rb内部:
class Project < ActiveRecord::Base
translates :title
end
那就是它!在形式或任何地方都没有别的事情可做。适用于整数和布尔值。如果使用postgres:CREATE EXTENSION hstore
,唯一要做的就是激活hstore
答案 2 :(得分:0)
我最近创建了宝石awesome_hstore_translate
,它基于Rob Worley的原始hstore_translate
。
BorderLayout
使用hstore_translate
,它已被Rails 5.0弃用。
我的宝石具有与原版相同的功能,但它更现代。它将数据存储在没有后缀的列中,因为我认为数据库模型看起来更干净。原始数据仍然可用。 E. g。 alias_method_chain
将为您提供hstore哈希值。