Associations, named_scope, and "active" records


Hello all,

We are converting our application so that user-generated content such as
votes, photos, users, comments, etc are all disabled instead of deleted.
This serves us better as administrators of the site as well as fits into
a UI redesign coming later that will include undo functionality. The
question I have is would it be better to place the active=true condition
part of all my associations I already have in place (little work), or do
I strip my associations down to barebones and build named_scopes for my
“active” state, and any other states? The problem here is I would need
to append nearly all calls to photo.votes, photo.comments,, project.votes, etc with .active (much more work).

Which is the better method in the long run? Thanks guys.


Makes sense just to add conditions to the associations

class Photo
has_many :votes, :conditions => ['active = ? ', true]

I presume this is what you’re planning on doing at the moment?

Less work and I doubt the scope would perform noticeably better (if at
all) ?

Why not try both methods and check the speed of each query?

On Apr 15, 9:58 pm, Bryan C. removed_email_address@domain.invalid


I’d suggest that you take a look at acts_as_paranoid for some ideas to
implement this without scattering checks all over the application.
Also dig around for a discussion on re-implementing acts_as_paranoid
with default_scope.

–Matt J.

On Apr 15, 4:58 pm, Bryan C. removed_email_address@domain.invalid