Class: ActiveRecord::DetailedDeleteRestrictionError
- Inherits:
-
ActiveRecordError
- Object
- ActiveRecordError
- ActiveRecord::DetailedDeleteRestrictionError
- Defined in:
- lib/dependent_protect/delete_restriction_error.rb
Overview
This error is raised when trying to destroy a parent instance in N:1 or 1:1 associations (has_many, has_one) when there is at least 1 child associated instance. ex: if @project.tasks.size > 0, DeleteRestrictionError will be raised when trying to destroy @project
Instance Method Summary collapse
- #basic_message ⇒ Object
- #detailed_message ⇒ Object
-
#initialize(name, record) ⇒ DetailedDeleteRestrictionError
constructor
:nodoc:.
Constructor Details
#initialize(name, record) ⇒ DetailedDeleteRestrictionError
:nodoc:
6 7 8 9 10 |
# File 'lib/dependent_protect/delete_restriction_error.rb', line 6 def initialize(name, record) @name = name @record = record super() end |
Instance Method Details
#basic_message ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/dependent_protect/delete_restriction_error.rb', line 12 def name = @name.to_s.gsub('_', ' ') assoc = @record.send(@name) count = assoc.respond_to?(:count) ? assoc.count : (assoc ? 1 : 0) if count == 1 "Cannot delete record because dependent #{name} exists" else "Cannot delete record because #{count} dependent #{name.pluralize} exist" end end |
#detailed_message ⇒ Object
23 24 25 26 27 28 |
# File 'lib/dependent_protect/delete_restriction_error.rb', line 23 def count = @record.send(@name).count examples = @record.send(@name).all(:limit => 5).map{|o| "#{o.id}: #{o.to_s}"} examples[4] = "...and #{count - 4} more" if count > 5 + "\n\n\nThese include:\n#{examples.join("\n")}" end |