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