Fix typo in set_callback docs. [ci skip]
Merge pull request #12148 from gzohari/callback-typo

Fix typo in set_callback docs. [ci skip]
Do not use instance variables if they are not reused elsewhere
Fix failure with minitest 5.0.7

Require minitest/mock in test where stub method is needed.

Apparently this was being "imported" by minitest pride plugin, which
previously required "minitest/autorun", that required "minitest/mock",
making the method available by chance.

It has been changed in minitest:
https://github.com/seattlerb/minitest/commit/595ce955c0d89575726d10fc18d2afd8f334bcbe

So we need to make sure we require what we really need where necessary.
ensure @model_class is initialized
don't depend on object state when reading fixture files
auto link hm:t fixture join tables like habtm
make the duplicate code more similar
reduce duplication somewhat
Use Ruby on Rails Coding Conventions for code examples in the guides

* Indent after private/protected
* Ruby >= 1.9 syntax for hashes
* Prefer method { do_stuff } instead of method{do_stuff} for single-line blocks.

[ci skip]
use polymorphic proxies to remove duplicate code
hm:t join tables may not have a primary key
Merge pull request #12155 from jetthoughts/reformat_guides_code_examples

Use Ruby on Rails Coding Conventions for code examples in the guides
Fix fixtures regression that required table names to map to classes only, not class names
Typo in Changelog.
Merge pull request #12164 from rywall/patch-1

Typo in Changelog. [ci skip]
Add `#any_of` query method to active_record

This method is inspired by [any_of from
mongoid](http://two.mongoid.org/docs/querying/criteria.html#any_of).

It is hooked on `WhereChain`, just like `#not`, and allows to compute an
`OR` like query that leverages AR's `#where` syntax:

    manual_removal = User.where(id: params[:users][:destroy_ids])
    users = User.where.any_of(manual_removal, "email like '%@example.com'", {banned: true}).destroy_all

It can be used anywhere `#where` is expected to work :

    manual_removal = User.where(id: params[:users][:destroy_ids])
    User.where.any_of(manual_removal, "email like '%@example.com'", {banned: true})
    @company.users.where.any_of(manual_removal, "email like '%@example.com'", {banned: true})
    User.where(offline: false).where.any_of( manual_removal, "email like '%@example.com'", {banned: true})

Its main purpose is to both :

* remove the need to write a sql string when we want an `OR`
* allow to write dynamic `OR` queries, which would be a pain with a string

There's also a negative version, `#none_of`. This will return all active
users :

    banned_users = User.where(banned: true)
    unconfirmed_users = User.where("confirmed_at IS NULL")
    active_users = User.where.none_of(banned_users, unconfirmed_users)