W modelu jednostki mam relację jeden do wielu z tłumaczeniami (ActiveRecord) w modelu jednostek użyłem nested attributes na tabele tłumaczeń. Założenie jest takie, że przynajmniej jedno tłumaczenie musi być (dla domyślnego języka), próbowałem dostać się do tłumaczeń przed zapisaniem rekordu (before_save), ale w liście metod nie widzę czegoś w stylu translations_attributes, jest tylko translations_attributes=.
[code=ruby]class Unit < ActiveRecord::Base
has_many :translations, class_name: ‘UnitTranslation’
def default_translation?
…
end
end[/code]
Jednym z pomysłów było przejrzenie tabeli translations (UnitTranslation), ale przed zapisaniem jest ona pusta.
Globalize pomimo że jest jednym z lepszych gemów do tłumaczenia (tak piszą) to mi osobiście nie przypadł do gustu. Poza tym ten gem nie oferuje czegoś takie jak wymaganie tłumaczenia dla domyślnego języka. Najwyraźniej trzeba będzie samemu napisać kod oferujący tą funkcjonalność.
A nie da się czegoś takiego uzyskać poprzez zwykły model i następne dodanie migracji do globalize3
class TranslatePosts < ActiveRecord::Migration
def self.up
Post.create_translation_table!({
:title => :string,
:text => :text
}, {
:migrate_data => true
})
end
def self.down
Post.drop_translation_table! :migrate_data => true
end
end
Na Post[:string] w zwykłym modelu dało by się validate_presence.