Save has_one associations only if record has changes

Prevents save related callbacks such as `after_commit` being
triggered when `has_one` objects are already persisted and have no
changes.
Replace map.flatten with flat_map in actionpack
Replace map.flatten with flat_map in activerecord
Replace map.flatten with flat_map in railties
Make CSRF failure logging optional/configurable.

Added the log_warning_on_csrf_failure option to ActionController::RequestForgeryProtection
which is on by default.
Fix OrderedHash.select to return self instance.

On ruby 2.1.1 the behavior of .select and .reject has changed.
They will return a Hash new instance, so we need to override them to
keep the instance object class.
Add preventDefault() on click event
Merge pull request #14316 from the4dpatrick/master

Add preventDefault() on click event
Make sure we clean preview_interceptors

We should make sure we clean preview_interceptors after each test so they dont leaky to the next test
Merge pull request #14318 from arthurnn/clean_preview_interceptors

Make sure we clean preview_interceptors
Tests for indifferent access using full_messages_for. Closes #11916
added CSRF helper to rails guide documentation. Closes #11615. [ci skip]
docs, shorten CsrfHelper description and refer to security guide. [ci skip]
Make the rails:template rake task load initializers

Templates could rely on irregular inflections or external libraries for
instance so we should load the application's initializers when running
the rails:template task.

The introducing commit of this feature is f7f11361 ; the initializers
have never been loaded invoking this task.

Fixes #12133.
Merge pull request #14280 from joho/make_csrf_failure_logging_optional

Make CSRF failure logging optional/configurable.
Merge pull request #14244 from arthurnn/orderd_hash_select_fix

Fix OrderedHash.select to return self instance.
Merge pull request #14325 from robin850/issue-12133

Make the rails:template rake task load initializers
Fix errors for four of the code samples
The four code samples that fail to run are:

- Add attribute magic to objects. Fixed by introducing a Person
  instance variable.

- Tracking value changes. Fixed by replacing `attr_accessor` with
  `define_attribute_methods`, providing getter and setter methods
  for `name` and providing the missing `Person#save` method. A
  call to `Person#save` has to precede the `person.name = 'robert'`
  assignment, if we want `previous_changes` to include 'bob'.

- Adding `errors` interface to objects. Fixed by introducing a
  Person instance variable, assigning `nil` to its name and calling
  `Person#validate!`.

- Custom validators. Fixed by defining `HasNameValidator` before
  it is used by `ValidatorPerson`.

All the code samples can now be run smoothly.

Call Dirty#changes_applied in Person#save, instead of modifying instance vars.
Merge pull request #14313 from m-Peter/active_model_doc_fixes

Fix errors for four of the code samples [ci skip]
Move setting :scope_level_resource to resource_scope

Originally with_scope_level was exclusively for managing scope levels with
resources, however it is now used for other things so it makes more sense
to move the responsibility for setting the :scope_level_resource to the
resource_scope method. This eliminates repeatedly setting it to the same
resource as each resource method scope is evaluated.