aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-05-17 09:56:21 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2012-05-17 09:56:21 -0700
commit6ada771a08196d8a5d790f8b4b2224aa8e1748b3 (patch)
tree711fd81e0a6b1f06560b46edde8852519d534999 /activerecord
parenta8f568e1ec4ce7c2346e98174466a616dc0cc3f3 (diff)
parenta8b370f5c2fed87001e363d18ce60a47c1748885 (diff)
downloadrails-6ada771a08196d8a5d790f8b4b2224aa8e1748b3.tar.gz
rails-6ada771a08196d8a5d790f8b4b2224aa8e1748b3.tar.bz2
rails-6ada771a08196d8a5d790f8b4b2224aa8e1748b3.zip
Merge pull request #6250 from iGEL/dont_destroy_readonly_models
Don't allow to destroy readonly models
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/CHANGELOG.md5
-rw-r--r--activerecord/lib/active_record/persistence.rb1
-rw-r--r--activerecord/test/cases/readonly_test.rb1
3 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 198b054f99..11fd0e7047 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,5 +1,10 @@
## Rails 4.0.0 (unreleased) ##
+* It's not possible anymore to destroy a model marked as read only.
+
+ *Johannes Barre*
+
+
* Added ability to ActiveRecord::Relation#from to accept other ActiveRecord::Relation objects
Record.from(subquery)
diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb
index 4a987c2343..a1bc39a32d 100644
--- a/activerecord/lib/active_record/persistence.rb
+++ b/activerecord/lib/active_record/persistence.rb
@@ -123,6 +123,7 @@ module ActiveRecord
# Deletes the record in the database and freezes this instance to reflect
# that no changes should be made (since they can't be persisted).
def destroy
+ raise ReadOnlyRecord if readonly?
destroy_associations
destroy_row if persisted?
@destroyed = true
diff --git a/activerecord/test/cases/readonly_test.rb b/activerecord/test/cases/readonly_test.rb
index 39b66b3399..df0399f548 100644
--- a/activerecord/test/cases/readonly_test.rb
+++ b/activerecord/test/cases/readonly_test.rb
@@ -23,6 +23,7 @@ class ReadOnlyTest < ActiveRecord::TestCase
end
assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save }
assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save! }
+ assert_raise(ActiveRecord::ReadOnlyRecord) { dev.destroy }
end