summaryrefslogtreecommitdiff
path: root/config/initializers/ar_monkey_patch.rb
diff options
context:
space:
mode:
Diffstat (limited to 'config/initializers/ar_monkey_patch.rb')
-rw-r--r--config/initializers/ar_monkey_patch.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/config/initializers/ar_monkey_patch.rb b/config/initializers/ar_monkey_patch.rb
index 0da584626ee..5506873344f 100644
--- a/config/initializers/ar_monkey_patch.rb
+++ b/config/initializers/ar_monkey_patch.rb
@@ -52,6 +52,24 @@ module ActiveRecord
raise
end
end
+
+ # This is patched because we need it to query `lock_version IS NULL`
+ # rather than `lock_version = 0` whenever lock_version is NULL.
+ def relation_for_destroy
+ return super unless locking_enabled?
+
+ column_name = self.class.locking_column
+ table_name = self.class.quoted_table_name
+ super.where("#{table_name}.#{column_name}" => self[column_name])
+ end
+ end
+
+ # This is patched because we want `lock_version` default to `NULL`
+ # rather than `0`
+ class LockingType < SimpleDelegator
+ def type_cast_from_database(value)
+ super
+ end
end
end
end