I’m having some trouble getting scoping to work correctly in rails.
My models:
class User < ActiveRecord::Base
default_scope :conditions => 'users.deleted_at IS NULL'
class Feed < ActiveRecord::Base
belongs_to :user, :foreign_key => :author_id
When I call the following:
feeds = Feed.includes(:user)
I want to skip over the default_scope for users. so I tried:
feeds = Feed.unscoped.includes(:user)
But this is not removing the scope from users. Any suggestions on how I can get this to work? Thank you
You can accomplish this by using
.unscopedin block form, as documented here:Note that whether or not the default scope applies depends on whether or not you’re inside the block when the query is actually executed. That’s why the above uses
.all, forcing the query to execute.Thus, while the above works, this won’t – the query is executed outside the
.unscopedblock and the default scope will apply: