]> source.dussan.org Git - redmine.git/commitdiff
Sqlite3: Boolean values are now stored as 1 and 0 (#23630).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 23 Sep 2018 08:48:29 +0000 (08:48 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 23 Sep 2018 08:48:29 +0000 (08:48 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@17500 e93f8b46-1217-0410-a6f0-8f06a7374b81

config/application.rb
db/migrate/20180923082945_change_sqlite_booleans_to_0_and_1.rb [new file with mode: 0644]

index cb848bee63d447949895baa74b2279db492196c7..d77d37e705eceddcb22551782f71a696743c8c58 100644 (file)
@@ -47,6 +47,9 @@ module RedmineApp
     # Do not include all helpers
     config.action_controller.include_all_helpers = false
 
+    # Since Redmine 4.0, boolean values are stored in sqlite3 databases as 1 and 0
+    config.active_record.sqlite3.represent_boolean_as_integer = true
+
     # Sets the Content-Length header on responses with fixed-length bodies
     config.middleware.insert_after Rack::Sendfile, Rack::ContentLength
 
diff --git a/db/migrate/20180923082945_change_sqlite_booleans_to_0_and_1.rb b/db/migrate/20180923082945_change_sqlite_booleans_to_0_and_1.rb
new file mode 100644 (file)
index 0000000..fb789ae
--- /dev/null
@@ -0,0 +1,46 @@
+class ChangeSqliteBooleansTo0And1 < ActiveRecord::Migration[5.2]
+
+  COLUMNS = {
+    AuthSource => ['onthefly_register', 'tls'],
+    CustomFieldEnumeration => ['active'],
+    CustomField => ['is_required', 'is_for_all', 'is_filter', 'searchable', 'editable', 'visible', 'multiple'],
+    EmailAddress => ['is_default', 'notify'],
+    Enumeration => ['is_default', 'active'],
+    Import => ['finished'],
+    IssueStatus => ['is_closed'],
+    Issue => ['is_private'],
+    Journal => ['private_notes'],
+    Member => ['mail_notification'],
+    Message => ['locked'],
+    Project => ['is_public', 'inherit_members'],
+    Repository => ['is_default'],
+    Role => ['assignable', 'all_roles_managed'],
+    Tracker => ['is_in_chlog', 'is_in_roadmap'],
+    UserPreference => ['hide_mail'],
+    User => ['admin', 'must_change_passwd'],
+    WikiPage => ['protected'],
+    WorkflowRule => ['assignee', 'author'],
+  }
+
+  def up
+    if ActiveRecord::Base.connection.adapter_name =~ /sqlite/i
+      COLUMNS.each do |klass, columns|
+        columns.each do |column|
+          klass.where("#{column} = 't'").update_all(column => 1)
+          klass.where("#{column} = 'f'").update_all(column => 0)
+        end
+      end
+    end
+  end
+
+  def down
+    if ActiveRecord::Base.connection.adapter_name =~ /sqlite/i
+      COLUMNS.each do |klass, columns|
+        columns.each do |column|
+          klass.where("#{column} = 1").update_all(column => 't')
+          klass.where("#{column} = 0").update_all(column => 'f')
+        end
+      end
+    end
+  end
+end