Class: Globalize::Automatic::Translation
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Globalize::Automatic::Translation
- Defined in:
- lib/globalize/automatic/translation.rb
Class Method Summary collapse
- .add_fields!(*fields) ⇒ Object
- .automatically_column_name(field) ⇒ Object
- .create_table!(*fields) ⇒ Object
- .drop_table! ⇒ Object
Instance Method Summary collapse
- #from_locale(attr_name) ⇒ Object
- #reject(attr_name, error) ⇒ Object
- #resolve(attr_name, translated) ⇒ Object
- #translate(attr_name) ⇒ Object
- #translation_for(target_locale) ⇒ Object
- #translation_from(attr_name) ⇒ Object
- #translation_to ⇒ Object
Class Method Details
.add_fields!(*fields) ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/globalize/automatic/translation.rb', line 63 def add_fields!(*fields) connection.change_table(table_name) do |t| fields.each do |field| t.boolean *automatically_column_args(field) end end end |
.automatically_column_name(field) ⇒ Object
71 72 73 |
# File 'lib/globalize/automatic/translation.rb', line 71 def automatically_column_name(field) :"#{field}_automatically" end |
.create_table!(*fields) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/globalize/automatic/translation.rb', line 47 def create_table!(*fields) relation_name = automatic_translated_model_foreign_key.sub(/_id$/, '') connection.create_table(table_name) do |t| t.references relation_name, null: false, index: { name: "index_#{Digest::MD5.hexdigest([table_name, relation_name].join('/'))}" } t.string :locale, null: false fields.each do |field| t.boolean *automatically_column_args(field) end t. null: false end end |
.drop_table! ⇒ Object
59 60 61 |
# File 'lib/globalize/automatic/translation.rb', line 59 def drop_table! connection.drop_table(table_name) end |
Instance Method Details
#from_locale(attr_name) ⇒ Object
6 7 8 |
# File 'lib/globalize/automatic/translation.rb', line 6 def from_locale(attr_name) automatic_translated_model.automatic_translation_locale(attr_name) end |
#reject(attr_name, error) ⇒ Object
39 |
# File 'lib/globalize/automatic/translation.rb', line 39 def reject(attr_name, error); end |
#resolve(attr_name, translated) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/globalize/automatic/translation.rb', line 30 def resolve(attr_name, translated) obj = translation_to obj.transaction do obj.lock! obj[attr_name] = translated obj.save!(validate: false) end end |
#translate(attr_name) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/globalize/automatic/translation.rb', line 22 def translate(attr_name) if automatically_for?(attr_name) Globalize::Automatic.asynchronously ? Globalize::Automatic::TranslationJob.perform_later(self, attr_name.to_s) : Globalize::Automatic::TranslationJob.perform_now(self, attr_name.to_s) end end |
#translation_for(target_locale) ⇒ Object
18 19 20 |
# File 'lib/globalize/automatic/translation.rb', line 18 def translation_for(target_locale) automatic_translated_model.translation_for(target_locale) end |
#translation_from(attr_name) ⇒ Object
10 11 12 |
# File 'lib/globalize/automatic/translation.rb', line 10 def translation_from(attr_name) translation_for(from_locale(attr_name)) end |
#translation_to ⇒ Object
14 15 16 |
# File 'lib/globalize/automatic/translation.rb', line 14 def translation_to translation_for(locale) end |