summaryrefslogtreecommitdiffstats
path: root/db/migrate
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-05 20:45:04 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2006-12-05 20:45:04 +0000
commit96f83cc8f0f032554f771a59da22303cd473b878 (patch)
tree355a0d2ed653a5426c59ebf6a1fe65eba024b4d0 /db/migrate
parenteabc04d8368824965d3ac8de3fa84502e9c05d38 (diff)
downloadredmine-96f83cc8f0f032554f771a59da22303cd473b878.tar.gz
redmine-96f83cc8f0f032554f771a59da22303cd473b878.zip
trunk moved from /trunk/redmine to /trunk
git-svn-id: http://redmine.rubyforge.org/svn/trunk@67 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/001_setup.rb317
-rw-r--r--db/migrate/002_issue_move.rb9
-rw-r--r--db/migrate/003_issue_add_note.rb9
-rw-r--r--db/migrate/004_export_pdf.rb11
-rw-r--r--db/migrate/005_issue_start_date.rb11
-rw-r--r--db/migrate/006_calendar_and_activity.rb13
-rw-r--r--db/migrate/007_create_journals.rb54
-rw-r--r--db/migrate/008_create_user_preferences.rb12
-rw-r--r--db/migrate/009_add_hide_mail_pref.rb9
9 files changed, 445 insertions, 0 deletions
diff --git a/db/migrate/001_setup.rb b/db/migrate/001_setup.rb
new file mode 100644
index 000000000..ee22c148b
--- /dev/null
+++ b/db/migrate/001_setup.rb
@@ -0,0 +1,317 @@
+# redMine - project management software
+# Copyright (C) 2006 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+class Setup < ActiveRecord::Migration
+ def self.up
+ create_table "attachments", :force => true do |t|
+ t.column "container_id", :integer, :default => 0, :null => false
+ t.column "container_type", :string, :limit => 30, :default => "", :null => false
+ t.column "filename", :string, :default => "", :null => false
+ t.column "disk_filename", :string, :default => "", :null => false
+ t.column "filesize", :integer, :default => 0, :null => false
+ t.column "content_type", :string, :limit => 60, :default => ""
+ t.column "digest", :string, :limit => 40, :default => "", :null => false
+ t.column "downloads", :integer, :default => 0, :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ end
+
+ create_table "auth_sources", :force => true do |t|
+ t.column "type", :string, :limit => 30, :default => "", :null => false
+ t.column "name", :string, :limit => 60, :default => "", :null => false
+ t.column "host", :string, :limit => 60
+ t.column "port", :integer
+ t.column "account", :string, :limit => 60
+ t.column "account_password", :string, :limit => 60
+ t.column "base_dn", :string, :limit => 255
+ t.column "attr_login", :string, :limit => 30
+ t.column "attr_firstname", :string, :limit => 30
+ t.column "attr_lastname", :string, :limit => 30
+ t.column "attr_mail", :string, :limit => 30
+ t.column "onthefly_register", :boolean, :default => false, :null => false
+ end
+
+ create_table "custom_fields", :force => true do |t|
+ t.column "type", :string, :limit => 30, :default => "", :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "field_format", :string, :limit => 30, :default => "", :null => false
+ t.column "possible_values", :text, :default => ""
+ t.column "regexp", :string, :default => ""
+ t.column "min_length", :integer, :default => 0, :null => false
+ t.column "max_length", :integer, :default => 0, :null => false
+ t.column "is_required", :boolean, :default => false, :null => false
+ t.column "is_for_all", :boolean, :default => false, :null => false
+ end
+
+ create_table "custom_fields_projects", :id => false, :force => true do |t|
+ t.column "custom_field_id", :integer, :default => 0, :null => false
+ t.column "project_id", :integer, :default => 0, :null => false
+ end
+
+ create_table "custom_fields_trackers", :id => false, :force => true do |t|
+ t.column "custom_field_id", :integer, :default => 0, :null => false
+ t.column "tracker_id", :integer, :default => 0, :null => false
+ end
+
+ create_table "custom_values", :force => true do |t|
+ t.column "customized_type", :string, :limit => 30, :default => "", :null => false
+ t.column "customized_id", :integer, :default => 0, :null => false
+ t.column "custom_field_id", :integer, :default => 0, :null => false
+ t.column "value", :text, :default => "", :null => false
+ end
+
+ create_table "documents", :force => true do |t|
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "category_id", :integer, :default => 0, :null => false
+ t.column "title", :string, :limit => 60, :default => "", :null => false
+ t.column "description", :text, :default => ""
+ t.column "created_on", :timestamp
+ end
+
+ add_index "documents", ["project_id"], :name => "documents_project_id"
+
+ create_table "enumerations", :force => true do |t|
+ t.column "opt", :string, :limit => 4, :default => "", :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ end
+
+ create_table "issue_categories", :force => true do |t|
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ end
+
+ add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
+
+ create_table "issue_histories", :force => true do |t|
+ t.column "issue_id", :integer, :default => 0, :null => false
+ t.column "status_id", :integer, :default => 0, :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "notes", :text, :default => ""
+ t.column "created_on", :timestamp
+ end
+
+ add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
+
+ create_table "issue_statuses", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "is_closed", :boolean, :default => false, :null => false
+ t.column "is_default", :boolean, :default => false, :null => false
+ t.column "html_color", :string, :limit => 6, :default => "FFFFFF", :null => false
+ end
+
+ create_table "issues", :force => true do |t|
+ t.column "tracker_id", :integer, :default => 0, :null => false
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "subject", :string, :default => "", :null => false
+ t.column "description", :text, :default => "", :null => false
+ t.column "due_date", :date
+ t.column "category_id", :integer
+ t.column "status_id", :integer, :default => 0, :null => false
+ t.column "assigned_to_id", :integer
+ t.column "priority_id", :integer, :default => 0, :null => false
+ t.column "fixed_version_id", :integer
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "lock_version", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ add_index "issues", ["project_id"], :name => "issues_project_id"
+
+ create_table "members", :force => true do |t|
+ t.column "user_id", :integer, :default => 0, :null => false
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "role_id", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ end
+
+ create_table "news", :force => true do |t|
+ t.column "project_id", :integer
+ t.column "title", :string, :limit => 60, :default => "", :null => false
+ t.column "summary", :string, :limit => 255, :default => ""
+ t.column "description", :text, :default => "", :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "created_on", :timestamp
+ end
+
+ add_index "news", ["project_id"], :name => "news_project_id"
+
+ create_table "permissions", :force => true do |t|
+ t.column "controller", :string, :limit => 30, :default => "", :null => false
+ t.column "action", :string, :limit => 30, :default => "", :null => false
+ t.column "description", :string, :limit => 60, :default => "", :null => false
+ t.column "is_public", :boolean, :default => false, :null => false
+ t.column "sort", :integer, :default => 0, :null => false
+ t.column "mail_option", :boolean, :default => false, :null => false
+ t.column "mail_enabled", :boolean, :default => false, :null => false
+ end
+
+ create_table "permissions_roles", :id => false, :force => true do |t|
+ t.column "permission_id", :integer, :default => 0, :null => false
+ t.column "role_id", :integer, :default => 0, :null => false
+ end
+
+ add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
+
+ create_table "projects", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "description", :string, :default => "", :null => false
+ t.column "homepage", :string, :limit => 60, :default => ""
+ t.column "is_public", :boolean, :default => true, :null => false
+ t.column "parent_id", :integer
+ t.column "projects_count", :integer, :default => 0
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ create_table "roles", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ end
+
+ create_table "tokens", :force => true do |t|
+ t.column "user_id", :integer, :default => 0, :null => false
+ t.column "action", :string, :limit => 30, :default => "", :null => false
+ t.column "value", :string, :limit => 40, :default => "", :null => false
+ t.column "created_on", :datetime, :null => false
+ end
+
+ create_table "trackers", :force => true do |t|
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "is_in_chlog", :boolean, :default => false, :null => false
+ end
+
+ create_table "users", :force => true do |t|
+ t.column "login", :string, :limit => 30, :default => "", :null => false
+ t.column "hashed_password", :string, :limit => 40, :default => "", :null => false
+ t.column "firstname", :string, :limit => 30, :default => "", :null => false
+ t.column "lastname", :string, :limit => 30, :default => "", :null => false
+ t.column "mail", :string, :limit => 60, :default => "", :null => false
+ t.column "mail_notification", :boolean, :default => true, :null => false
+ t.column "admin", :boolean, :default => false, :null => false
+ t.column "status", :integer, :default => 1, :null => false
+ t.column "last_login_on", :datetime
+ t.column "language", :string, :limit => 2, :default => ""
+ t.column "auth_source_id", :integer
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ create_table "versions", :force => true do |t|
+ t.column "project_id", :integer, :default => 0, :null => false
+ t.column "name", :string, :limit => 30, :default => "", :null => false
+ t.column "description", :string, :default => ""
+ t.column "effective_date", :date, :null => false
+ t.column "created_on", :timestamp
+ t.column "updated_on", :timestamp
+ end
+
+ add_index "versions", ["project_id"], :name => "versions_project_id"
+
+ create_table "workflows", :force => true do |t|
+ t.column "tracker_id", :integer, :default => 0, :null => false
+ t.column "old_status_id", :integer, :default => 0, :null => false
+ t.column "new_status_id", :integer, :default => 0, :null => false
+ t.column "role_id", :integer, :default => 0, :null => false
+ end
+
+ # project
+ Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true
+ Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true
+ Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true
+ Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150
+ Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151
+ # members
+ Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true
+ Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220
+ Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221
+ Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222
+ # versions
+ Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320
+ Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321
+ Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322
+ # issue categories
+ Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420
+ Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421
+ Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422
+ # issues
+ Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true
+ Permission.create :controller => "projects", :action => "export_issues_csv", :description => "label_export_csv", :sort => 1001, :is_public => true
+ Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true
+ Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true
+ Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1
+ Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055
+ Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
+ Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065
+ Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070
+ Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075
+ # news
+ Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true
+ Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true
+ Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120
+ Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121
+ Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122
+ # documents
+ Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true
+ Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true
+ Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true
+ Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220
+ Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221
+ Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222
+ Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223
+ Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224
+ # files
+ Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true
+ Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true
+ Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320
+ Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322
+
+ # create default administrator account
+ user = User.create :firstname => "redMine", :lastname => "Admin", :mail => "admin@somenet.foo", :mail_notification => true, :language => "en"
+ user.login = "admin"
+ user.password = "admin"
+ user.admin = true
+ user.save
+
+
+ end
+
+ def self.down
+ drop_table :attachments
+ drop_table :auth_sources
+ drop_table :custom_fields
+ drop_table :custom_fields_projects
+ drop_table :custom_fields_trackers
+ drop_table :custom_values
+ drop_table :documents
+ drop_table :enumerations
+ drop_table :issue_categories
+ drop_table :issue_histories
+ drop_table :issue_statuses
+ drop_table :issues
+ drop_table :members
+ drop_table :news
+ drop_table :permissions
+ drop_table :permissions_roles
+ drop_table :projects
+ drop_table :roles
+ drop_table :trackers
+ drop_table :tokens
+ drop_table :users
+ drop_table :versions
+ drop_table :workflows
+ end
+end
diff --git a/db/migrate/002_issue_move.rb b/db/migrate/002_issue_move.rb
new file mode 100644
index 000000000..d1acf7ee2
--- /dev/null
+++ b/db/migrate/002_issue_move.rb
@@ -0,0 +1,9 @@
+class IssueMove < ActiveRecord::Migration
+ def self.up
+ Permission.create :controller => "projects", :action => "move_issues", :description => "button_move", :sort => 1061, :mail_option => 0, :mail_enabled => 0
+ end
+
+ def self.down
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'move_issues']).destroy
+ end
+end
diff --git a/db/migrate/003_issue_add_note.rb b/db/migrate/003_issue_add_note.rb
new file mode 100644
index 000000000..9f20039b0
--- /dev/null
+++ b/db/migrate/003_issue_add_note.rb
@@ -0,0 +1,9 @@
+class IssueAddNote < ActiveRecord::Migration
+ def self.up
+ Permission.create :controller => "issues", :action => "add_note", :description => "label_add_note", :sort => 1057, :mail_option => 1, :mail_enabled => 0
+ end
+
+ def self.down
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'add_note']).destroy
+ end
+end
diff --git a/db/migrate/004_export_pdf.rb b/db/migrate/004_export_pdf.rb
new file mode 100644
index 000000000..66045553f
--- /dev/null
+++ b/db/migrate/004_export_pdf.rb
@@ -0,0 +1,11 @@
+class ExportPdf < ActiveRecord::Migration
+ def self.up
+ Permission.create :controller => "projects", :action => "export_issues_pdf", :description => "label_export_pdf", :sort => 1002, :is_public => true, :mail_option => 0, :mail_enabled => 0
+ Permission.create :controller => "issues", :action => "export_pdf", :description => "label_export_pdf", :sort => 1015, :is_public => true, :mail_option => 0, :mail_enabled => 0
+ end
+
+ def self.down
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'export_issues_pdf']).destroy
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'export_pdf']).destroy
+ end
+end
diff --git a/db/migrate/005_issue_start_date.rb b/db/migrate/005_issue_start_date.rb
new file mode 100644
index 000000000..3d1693fc6
--- /dev/null
+++ b/db/migrate/005_issue_start_date.rb
@@ -0,0 +1,11 @@
+class IssueStartDate < ActiveRecord::Migration
+ def self.up
+ add_column :issues, :start_date, :date
+ add_column :issues, :done_ratio, :integer, :default => 0, :null => false
+ end
+
+ def self.down
+ remove_column :issues, :start_date
+ remove_column :issues, :done_ratio
+ end
+end
diff --git a/db/migrate/006_calendar_and_activity.rb b/db/migrate/006_calendar_and_activity.rb
new file mode 100644
index 000000000..5d8474fc2
--- /dev/null
+++ b/db/migrate/006_calendar_and_activity.rb
@@ -0,0 +1,13 @@
+class CalendarAndActivity < ActiveRecord::Migration
+ def self.up
+ Permission.create :controller => "projects", :action => "activity", :description => "label_activity", :sort => 160, :is_public => true, :mail_option => 0, :mail_enabled => 0
+ Permission.create :controller => "projects", :action => "calendar", :description => "label_calendar", :sort => 165, :is_public => true, :mail_option => 0, :mail_enabled => 0
+ Permission.create :controller => "projects", :action => "gantt", :description => "label_gantt", :sort => 166, :is_public => true, :mail_option => 0, :mail_enabled => 0
+ end
+
+ def self.down
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'activity']).destroy
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'calendar']).destroy
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'gantt']).destroy
+ end
+end
diff --git a/db/migrate/007_create_journals.rb b/db/migrate/007_create_journals.rb
new file mode 100644
index 000000000..6170b5bd3
--- /dev/null
+++ b/db/migrate/007_create_journals.rb
@@ -0,0 +1,54 @@
+class CreateJournals < ActiveRecord::Migration
+
+ # model removed, but needed for data migration
+ class IssueHistory < ActiveRecord::Base; belongs_to :issue; end
+
+ def self.up
+ create_table :journals, :force => true do |t|
+ t.column "journalized_id", :integer, :default => 0, :null => false
+ t.column "journalized_type", :string, :limit => 30, :default => "", :null => false
+ t.column "user_id", :integer, :default => 0, :null => false
+ t.column "notes", :text
+ t.column "created_on", :datetime, :null => false
+ end
+ create_table :journal_details, :force => true do |t|
+ t.column "journal_id", :integer, :default => 0, :null => false
+ t.column "property", :string, :limit => 30, :default => "", :null => false
+ t.column "prop_key", :string, :limit => 30, :default => "", :null => false
+ t.column "old_value", :string
+ t.column "value", :string
+ end
+
+ # indexes
+ add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
+ add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
+
+ Permission.create :controller => "issues", :action => "history", :description => "label_history", :sort => 1006, :is_public => true, :mail_option => 0, :mail_enabled => 0
+
+ # data migration
+ IssueHistory.find(:all, :include => :issue).each {|h|
+ j = Journal.new(:journalized => h.issue, :user_id => h.author_id, :notes => h.notes, :created_on => h.created_on)
+ j.details << JournalDetail.new(:property => 'attr', :prop_key => 'status_id', :value => h.status_id)
+ j.save
+ }
+
+ drop_table :issue_histories
+ end
+
+ def self.down
+ drop_table :journal_details
+ drop_table :journals
+
+ create_table "issue_histories", :force => true do |t|
+ t.column "issue_id", :integer, :default => 0, :null => false
+ t.column "status_id", :integer, :default => 0, :null => false
+ t.column "author_id", :integer, :default => 0, :null => false
+ t.column "notes", :text, :default => ""
+ t.column "created_on", :timestamp
+ end
+
+ add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
+
+ Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'history']).destroy
+ end
+end
diff --git a/db/migrate/008_create_user_preferences.rb b/db/migrate/008_create_user_preferences.rb
new file mode 100644
index 000000000..80ae1cdf9
--- /dev/null
+++ b/db/migrate/008_create_user_preferences.rb
@@ -0,0 +1,12 @@
+class CreateUserPreferences < ActiveRecord::Migration
+ def self.up
+ create_table :user_preferences do |t|
+ t.column "user_id", :integer, :default => 0, :null => false
+ t.column "others", :text
+ end
+ end
+
+ def self.down
+ drop_table :user_preferences
+ end
+end
diff --git a/db/migrate/009_add_hide_mail_pref.rb b/db/migrate/009_add_hide_mail_pref.rb
new file mode 100644
index 000000000..a22eafd93
--- /dev/null
+++ b/db/migrate/009_add_hide_mail_pref.rb
@@ -0,0 +1,9 @@
+class AddHideMailPref < ActiveRecord::Migration
+ def self.up
+ add_column :user_preferences, :hide_mail, :boolean, :default => false
+ end
+
+ def self.down
+ remove_column :user_preferences, :hide_mail
+ end
+end