全球化宝石的替代品

时间:2016-04-23 22:02:52

标签: ruby-on-rails

我尝试了globalize gem,但这似乎是一个很大的开销。大多数时候我只需要翻译一个属性。我正在使用postgreSQL而宁愿使用hstore。这样我就不会得到额外的表格,性能应该至少和好一样好。

有没有使用这种方法的宝石,或者这是否意味着自定义开发?

3 个答案:

答案 0 :(得分:1)

好像您正在搜索 hstore_translate gem 。我没有对它进行测试,但它似乎完全符合您的描述:

  使用PostgreSQL的hstore数据类型,使用Rails I18n库进行ActiveRecord模型/数据转换。它提供了一个受Globalize3启发的界面,但不需要维护单独的转换表。

答案 1 :(得分:0)

我一直在使用hstore_translate gem并喜欢它。

例如,假设您有一个包含title:stringcontent: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哈希值。