2015-11-26 2 views
0

В globalize/globalize, Я хочу отступить к другой колонке. образец источника.Откат к другой колонке в globalize

class CreatePosts < ActiveRecord::Migration 
    def up 
    create_table :posts do |t| 
     t.string :foo, null: false 

     t.timestamps null: false 
    end 
    Post.create_translation_table! hoge: :string 
    end 
end 

class Post < ActiveRecord::Base 
    # this not work. but I want to like this. 
    translates :hoge, :fallbacks_for_empty_translations => :foo 
end 

Хотя кажется двойным управлением колонки hoge и foo, я планирую отобразить содержимое столбца hoge в случае колонке foo пуста. Вы можете редактировать содержимое открытого источника globalize.

ответ

0

Как указано в глобалистского документации, вам не нужно, чтобы добавить переводимый столбец в таблице миграции, но передать его в качестве аргумента создать таблицу перевода

class CreatePosts < ActiveRecord::Migration 
    def up 
    create_table :posts do |t| 
     # no foo column specified here 
     t.timestamps null: false 
    end 
    Post.create_translation_table! foo: :string 
    end 
end 

class Post < ActiveRecord::Base 
    translates :foo, :fallbacks_for_empty_translations => true 
end 

Это не будет создавать отдельные столбцы для каждого язык, но новая запись в таблице переводов для каждого языка, связанного с каждой записью в основной таблице моделей.

Если вы правильно установили

config.i18n.fallbacks = true 

и установить :en в качестве языка по умолчанию, получая значение поля Foo всякий раз, когда локализированное значение отсутствует по умолчанию будет значение английского языка. Например, если два сообщения (post1 и post2) с данными

[#<Post::Translation id: 1, post_id: 1, locale: "en", foo: 'Italy'>, 
    #<Post::Translation id: 2, post_id: 1, locale: "jp", foo: 'Hetalia'>, 
    #<Post::Translation id: 3, post_id: 2, locale: "en", foo: 'Finland'>, 
    #<Post::Translation id: 4, post_id: 2, locale: "jp", foo: ''>] 

если ваша локаль на японский язык, вы получите

post1.foo # => 'Hetalia' 
post2.foo # => 'Finland' 
+0

спасибо. но моя система должна вернуться к другой колонке. –

+0

Тогда вы уверены, что глобализация - это правильный камень для вас? Если столбцы не являются просто переводами друг друга, альтернатива заключается в том, чтобы определить свой собственный сеттер и геттеры для этих столбцов, а не использовать глобализацию вообще –