переводить поля базы данных с помощью рельсов - PullRequest
1 голос
/ 19 марта 2010

Я знаю о встроенном I18n в Rails, но как я могу выбрать поле базы данных для локали?

Моя структура модели выглядит примерно так:

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

В моем шаблоне я хочу иметь возможность писать только

<%= @model.title %>

и должен получить значение на правильном языке.

Существует ли плагин или решение для использования разных полей в разных настройках локали со структурой, подобной моей?

Ответы [ 2 ]

0 голосов
/ 19 марта 2010

Хотя ваша архитектура БД (различные локали, жестко закодированные как столбцы таблицы) мне кажется неправильной, я думаю, что вы можете достичь того, чего хотите, добавив псевдополе в вашу модель, что-то вроде:

# 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,, похоже, он в значительной степени совместим с вашей архитектурой ....

0 голосов
/ 19 марта 2010

Попробуйте использовать:

http://github.com/joshmh/globalize2

Может потребоваться переименование столбцов (в другой стандарт).

...