[LRUG] Deleting data that's in use

Tom Ward tom at popdog.net
Wed Nov 12 10:45:31 PST 2008


A common solution is to have a datetime 'deleted_at' column in your
database and set that when the user deletes a company.  Then in the
UI, only show companies where deleted_at is null.  In later versions
of rails, you could use a named scope to restrict your queries, such
as:

class Company < ActiveRecord::Base
    named_scope :visible, :conditions => {:deleted_at => false}
end

class CompaniesController < ApplicationController
  def show
    @company = Company.visible.find(params[:id])
  end
end

Accessing the company through a relationship (such as from the
delivery note) will work as before.

Tom

2008/11/12 Andrew Stewart <boss at airbladesoftware.com>:
> Hi El Rug,
>
> (This isn't a Ruby language question; it's more of an interaction design
> question.)
>
> In my current app users manage the loaning of stuff to companies.  It's a
> bit like a library loaning books to customers.  Every loan generates a
> delivery note which records what was lent to whom.
>
> Today a user wanted to delete one of the companies from the system.  This
> company has received a number of loans in the past.  The deletion
> (correctly) failed because a foreign key constraint in the database said no,
> you can't delete that company because it's referenced by several delivery
> notes.  So the company is still there, causing much rolling of eyes and
> shrugging of shoulders by the user.
>
> What's the best way to handle this?
>
> I'm thinking that deleting the company would indeed be wrong because it
> breaks the delivery notes in question.  Perhaps when the user clicks delete,
> the system should "soft delete" it (if there are any delivery notes
> referring to it, otherwise delete as normal) -- i.e. freeze the company's
> attributes, don't show it in any list of companies, and don't delete it.
>
> Is this a good idea?  Are there better ideas?  I'd value your thoughts.
>
> Thanks and regards,
>
> Andy Stewart
>
> -------
> http://airbladesoftware.com
>
>
>
> _______________________________________________
> Chat mailing list
> Chat at lists.lrug.org
> http://lists.lrug.org/listinfo.cgi/chat-lrug.org
>



More information about the Chat mailing list