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.photos, 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

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

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?

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 Jones