提交 d424ded6 编写于 作者: F Franky W

Print out a meaningful error when ActiveRecord::ReadOnlyRecord is raised

Currently, there is no messages which get printed out. Convoluted system
may have hooks that create other objects in which case we only fail with
no messages. This commit changes this information allowing you to know
which object is the one that actually raised the error.
上级 9a517b5a
......@@ -188,7 +188,7 @@ def delete
# and <tt>destroy</tt> returns +false+. See
# ActiveRecord::Callbacks for further details.
def destroy
raise ReadOnlyRecord if readonly?
raise ReadOnlyRecord, "#{self.class} is marked as readonly" if readonly?
destroy_associations
destroy_row if persisted?
@destroyed = true
......@@ -519,7 +519,7 @@ def relation_for_destroy
end
def create_or_update
raise ReadOnlyRecord if readonly?
raise ReadOnlyRecord, "#{self.class} is marked as readonly" if readonly?
result = new_record? ? _create_record : _update_record
result != false
end
......
......@@ -22,9 +22,12 @@ def test_cant_save_readonly_record
assert !dev.save
dev.name = 'Forbidden.'
end
assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save }
assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save! }
assert_raise(ActiveRecord::ReadOnlyRecord) { dev.destroy }
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save }
assert_equal "Developer is marked as readonly", e.message
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save! }
assert_equal "Developer is marked as readonly", e.message
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.destroy }
assert_equal "Developer is marked as readonly", e.message
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册