I have a Writer model that has_many books. Each book has_many orders. In order to prevent unwanted deletions, the Book model has a before_destroy hook method to make sure it isn’t referenced in the Order model, as suggested in PragProg Agile Web Dev (p.7)
Book.rb
before_destroy: :ensure_not_referenced_by_any_order
def ensure_not_referenced_by_any_order
if orders.empty?
return true
else
return false
end
end
How would I write a before_destroy hook method for the Writer model so that for Writer.books.each, no orders exist? I started writing the below, but can’t figure out exactly how to write it.
Writer.rb
before_destroy: :ensure_books_not_referenced_by_any_order
def ensure_books_not_referenced_by_any_order
self.books.each do |book|
if book.orders.empty?
return true
else
return false
end
end
end
Thanks very much for your help!
Couldn’t get @Mark’s suggestion to work. Resorted to restricting only for books.empty?, meaning a writer must delete all of his books first in order to delete his own profile.
Please let me know if you have insight on how I can get the has_no_books_reference_by_any_order loop to work, and I will accept if it does. Thanks!