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 .unscoped
in block form, as documented here:
User.unscoped do
@feeds = Feed.includes(:user).all
end
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 .unscoped
block and the default scope will apply:
User.unscoped do
@feeds = Feed.includes(:user)
end
@feeds #included Users will have default scope
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With