]> git.openstreetmap.org Git - rails.git/blobdiff - db/migrate/034_create_languages.rb
Sort out storage and use of user preferred languages.
[rails.git] / db / migrate / 034_create_languages.rb
index db34978a8ff856894e1bf1ef62c9f62ca6ac289d..17f5efe027e37d4b12bc44175ba8f73bed2561aa 100644 (file)
@@ -2,23 +2,31 @@ require 'lib/migrate'
 
 class CreateLanguages < ActiveRecord::Migration
   def self.up
-    create_table :languages do |t|
-      t.string :language_code, :limit => 5, :null => false
-      t.string :name, :null => false
-      t.boolean :translation_available, :null => false, :default => false
+    create_table :languages, innodb_table do |t|
+      t.string :code, :null => false
+      t.string :english_name, :null => false
+      t.string :native_name
+    end
+
+    add_primary_key :languages, [:code]
 
-      t.timestamps
+    YAML.load(File.read(RAILS_ROOT + "/config/languages.yml")).each do |k,v|
+      Language.create do |l|
+        l.code = k
+        l.english_name = v["english"]
+        l.native_name = v["native"]
+      end
     end
-    
-    add_index :languages, [:language_code], :unique => true
 
-    Language.create(:language_code => 'en', :name => 'English', :translation_available => true)
-    
-    add_foreign_key :users, [:locale], :languages, [:language_code]
-    add_foreign_key :diary_entries, [:language], :languages, [:language_code]    
+    add_foreign_key :users, [:locale], :languages, [:code]
+    add_foreign_key :diary_entries, [:language_code], :languages, [:code]    
   end
 
   def self.down
-    raise IrreversibleMigration.new
+    remove_foreign_key :diary_entries, [:language_code], :languages, [:code]
+    remove_foreign_key :users, [:locale], :languages, [:code]
+
+    drop_table :languages
   end
 end
+