ActiveRecord::Base.default_scopes?

ActiveRecord models has a weird behavior.

class Post < ActiveRecord::Base

end

% Post.default_scopes? # => true

This happens because Post.default_scopes returns an empty array and .default_scopes? calls !! which is true. But this can be confusing, don’t you think?

I can't seem to find the docs for default_scopes? Can you point me to it?

Colin

It’s not documented since it’s dynamically defined.

It's not documented since it's dynamically defined.

Many dynamically defined methods are documented in various places (in the Rails Guides for example). If it is not documented how am I supposed to know how what it does?

Colin

I’m sorry but I didn’t wrote these methods.

However, you can still understand what it does by:

  1. using it in the rails console
  2. reading the source
  3. reading its name (in this particular occasion, it’s very obvious)

I'm sorry but I didn't wrote these methods.

However, you can still understand what it does by:

using it in the rails console reading the source reading its name (in this particular occasion, it's very obvious)

Generally I assume that if a method is not documented anywhere then it is probably not intended to be used by lesser mortals, and may be liable to change without warning, and therefore I do not care what the interface is. Perhaps that is not be a reasonable stance to take however.

Colin