ruby 使用Rails转换数据库字段

mgdq6dx1  于 2022-11-04  发布在  Ruby
关注(0)|答案(3)|浏览(115)

我知道Rails中内置的I18n,但是我如何为每个区域设置选择一个数据库字段呢?
我的模型结构是这样的:

title    #default (englisch)
title_de #(german)
title_it #(italian)

在我的模板中,我希望只能够写入

<%= @model.title %>

并且应该以正确的语言获取值。
有没有一个插件或解决方案,以使用不同的字段,每个不同的区域设置与结构一样,我?

pdsfdshx

pdsfdshx1#

虽然您的数据库架构(不同的区域设置硬编码为表列)在我看来是错误的,但我认为您可以通过向模型中添加一个伪字段来实现您想要的结果,沿着:


# example not tested

class MyModel < ActiveRecord::Base
  def localized_title(locale)
    locale = locale == 'en' ? '' : '_' + locale
    read_attribute("title#{locale}".to_sym")
  end
end

或者,如果您以某种方式使当前的语言环境对模型可见,您可以类似地覆盖默认的title访问器方法。
编辑:您可以看一下http://github.com/iain/translatable_columns,它似乎与您的体系结构非常兼容......

q3aa0525

q3aa05252#

请尝试使用:
http://github.com/joshmh/globalize2
这可能需要重命名列(使用不同的标准)。

czq61nw1

czq61nw13#

目前,转换活动记录模型字段的最佳方法是使用https://github.com/shioyama/mobility

相关问题