Associations, named_scope, and "active" records


#1

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.


#2

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?

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


#3

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