Module: Globalize::ActiveRecord::Migration
- Defined in:
- lib/globalize/active_record/migration.rb
Instance Method Summary collapse
- #create_translation_table!(fields) ⇒ Object
- #drop_translation_table! ⇒ Object
- #translation_index_name ⇒ Object
Instance Method Details
#create_translation_table!(fields) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/globalize/active_record/migration.rb', line 4 def create_translation_table!(fields) translated_attribute_names.each do |f| raise MigrationMissingTranslatedField, "Missing translated field #{f}" unless fields[f] end fields.each do |name, type| if translated_attribute_names.include?(name) && ![:string, :text].include?(type) raise BadMigrationFieldType, "Bad field type for #{name}, should be :string or :text" end end self.connection.create_table(translations_table_name) do |t| t.references table_name.sub(/^#{table_name_prefix}/, "").singularize t.string :locale fields.each do |name, type| t.column name, type end t. end self.connection.add_index( translations_table_name, "#{table_name.sub(/^#{table_name_prefix}/, "").singularize}_id", :name => translation_index_name ) end |
#drop_translation_table! ⇒ Object
38 39 40 41 |
# File 'lib/globalize/active_record/migration.rb', line 38 def drop_translation_table! self.connection.remove_index(translations_table_name, :name => translation_index_name) rescue nil self.connection.drop_table(translations_table_name) end |
#translation_index_name ⇒ Object
31 32 33 34 35 36 |
# File 'lib/globalize/active_record/migration.rb', line 31 def translation_index_name require 'digest/sha1' # FIXME what's the max size of an index name? index_name = "index_#{translations_table_name}_on_#{self.table_name.singularize}_id" index_name.size < 50 ? index_name : "index_#{Digest::SHA1.hexdigest(index_name)}" end |