aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Allow multiparameter assigned attributes to be used with `text_field`Sean Griffin2017-07-175-1/+25
| | | | | | | | | | | | | | | | | | | | | Between 4.2 and 5.0 the behavior of how multiparameter attributes interact with `_before_type_cast` changed. In 4.2 it returns the post-type-cast value. After 5.0, it returns the hash that gets sent to the type. This behavior is correct, but will cause an issue if you then tried to render that value in an input like `text_field` or `hidden_field`. In this case, we want those fields to use the post-type-cast form, instead of the `_before_type_cast` (the main reason it uses `_before_type_cast` at all is to avoid losing data when casting a non-numeric string to integer). I've opted to modify `came_from_user?` rather than introduce a new method for this as I want to avoid complicating that contract further, and technically the multiparameter hash didn't come from assignment, it was constructed internally by AR. Close #27888.
* Merge pull request #29758 from glaucocustodio/patch-1 [ci skip]Sean Griffin2017-07-172-2/+11
|\ | | | | Add documentation for class_attribute default option
| * Add documentation for class_attribute optionsGlauco Custódio2017-07-172-2/+11
| |
* | Merge pull request #29825 from kamipo/remove_useless_arel_engineSean Griffin2017-07-174-19/+3
|\ \ | | | | | | Remove useless `arel_engine`
| * | Remove useless `arel_engine`Ryuta Kamizono2017-07-174-19/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `arel_engine` is only used in `raise_record_not_found_exception!` to use `engine.connection` (and `connection.visitor`) in `arel.where_sql`. https://github.com/rails/arel/blob/v8.0.0/lib/arel/select_manager.rb#L183 But `klass.connection` will work as expected even if not using `arel_engine` (described by `test_connection`). So `arel_engine` is no longer needed.
* | | Post.joins(:users) should not be affected by `User.current_scope`Sean Griffin2017-07-173-4/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change was introduced by #18109. The intent of that change was to specifically apply `unscoped`, not to allow all changes to `current_scope` to affect the join. The idea of allowing `current_scope` to affect joins is interesting and potentially more consistent, but has sever problems associated with it. The fact that we're specifically stripping out joins indicates one such problem (and potentially leads to invalid queries). Ultimately it's difficult to reason about what `Posts.joins(:users)` actually means if it's affected by `User.current_scope`, and it's difficult to specifically control what does or doesn't get added. If we were starting from scratch, I don't think I'd have `joins` be affected by `default_scope` either, but that's too big of a breaking change to make at this point. With this change, we no longer apply `current_scope` when bringing in joins, with the singular exception of the motivating use case which introduced this bug, which is providing a way to *opt-out* of having the default scope apply to joins. Fixes #29338.
* | | Merge pull request #28077 from Erol/make-reverse-merge-bang-order-consistentSean Griffin2017-07-174-5/+11
|\ \ \ | |/ / |/| | Make the order of Hash#reverse_merge! consistent with HashWithIndifferentAccess
| * | Merge branch 'master' into make-reverse-merge-bang-order-consistentSean Griffin2017-07-171531-11616/+18098
| |\ \ | |/ / |/| |
* | | Merge pull request #29810 from kamipo/add_first_parameter_indentationMatthew Draper2017-07-176-30/+34
|\ \ \ | | | | | | | | Enable `Layout/FirstParameterIndentation` cop
| * | | Enable `Layout/FirstParameterIndentation` copRyuta Kamizono2017-07-176-30/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We have some indentation cops. But now there is a little inconsistent params indentations. Enable `Layout/FirstParameterIndentation` cop to prevent newly inconsistent indentation added and auto-correct to existing violations.
* | | | Merge pull request #29821 from y-yagi/set_rails_env_before_load_application_fileKasper Timm Hansen2017-07-172-4/+36
|\ \ \ \ | |/ / / |/| | | Set `RAILS_ENV` before load application file
| * | | Set `RAILS_ENV` before load application fileyuuji.yaginuma2017-07-172-4/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since #29725, load application file when `dbconsole` command is executed. However, if do not set `RAILS_ENV` before reading the application file, can not connect to the env specified in option, so added the setting of `RAILS_ENV`.
* | | | Merge pull request #29819 from kirs/frozen-activemodelMatthew Draper2017-07-17117-0/+232
|\ \ \ \ | |/ / / |/| | | Use frozen string literal in activemodel/
| * | | Use frozen string literal in activemodel/Kir Shatrov2017-07-16117-0/+232
| | | |
* | | | Merge pull request #29812 from kamipo/remove_unused_requiresKasper Timm Hansen2017-07-162-5/+0
|\ \ \ \ | | | | | | | | | | Remove unused requires
| * | | | Remove unused requiresRyuta Kamizono2017-07-162-5/+0
| | | | |
* | | | | Merge pull request #29782 from y-yagi/follow_up_29699Kasper Timm Hansen2017-07-165-17/+50
|\ \ \ \ \ | | | | | | | | | | | | Set `represent_boolean_as_integer` via `configuration`
| * | | | | add helper method for explicit lazy loadyuuji.yaginuma2017-07-161-13/+18
| | | | | |
| * | | | | Set `represent_boolean_as_integer` via `configuration`yuuji.yaginuma2017-07-165-5/+33
| | | | | |
* | | | | | Merge pull request #29813 from kamipo/fix_create_with_multiparameter_attributesKasper Timm Hansen2017-07-162-16/+34
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix `create_with` with multiparameter attributes
| * | | | | | Fix `create_with` with multiparameter attributesRyuta Kamizono2017-07-162-16/+34
| | |/ / / / | |/| | | |
* | | | | | Merge pull request #29814 from kamipo/dont_cache_scope_for_createKasper Timm Hansen2017-07-164-14/+6
|\ \ \ \ \ \ | | | | | | | | | | | | | | Don't cache `scope_for_create`
| * | | | | | Don't cache `scope_for_create`Ryuta Kamizono2017-07-164-14/+6
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I investigated where `scope_for_create` is reused in tests with the following code: ```diff --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -590,6 +590,10 @@ def where_values_hash(relation_table_name = table_name) end def scope_for_create + if defined?(@scope_for_create) && @scope_for_create + puts caller + puts "defined" + end @scope_for_create ||= where_values_hash.merge!(create_with_value.stringify_keys) end ``` It was hit only `test_scope_for_create_is_cached`. This means that `scope_for_create` will not be reused in normal use cases. So we can remove caching `scope_for_create` to respect changing `where_clause` and `create_with_value`.
* | | | | | Merge pull request #29358 from robin850/dbconsole-connectionKasper Timm Hansen2017-07-166-19/+128
|\ \ \ \ \ \ | | | | | | | | | | | | | | Allow to pass a connection to the `dbconsole` command
| * | | | | | Properly expand the environment's nameRobin Dupret2017-07-166-7/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running the `console` and `dbconsole` commands with a regular argument as the environment's name automatically expand it to match an existing environment (e.g. dev for development). This feature wasn't available using the `--environment` (a.k.a `-e`) option.
| * | | | | | Deprecate environment as an argument for dbconsole and consoleRobin Dupret2017-07-164-12/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | People should rather rely on the `-e` or `--environment` options to specify in which environment they want to work. This will allow us to specify the connection to pick as a regular argument in the future.
| * | | | | | Allow to pass a connection to the `dbconsole` commandRobin Dupret2017-07-163-2/+64
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 0a4f6009, it's possible to specify a 3-level database configuration to gather connections by environment. The `dbconsole` command will try to look for a database configuration which points to the current environment but with such flavour, the environment key is flushed out so let's add the ability to specify the connection and pick `primary` by default to be consistent with Active Record.
* | | / / / Fix root not being defined on Travis.Kasper Timm Hansen2017-07-161-1/+6
| |_|/ / / |/| | | |
* | | | | explain why require_relative is not used here [ci skip]Xavier Noria2017-07-161-0/+2
| | | | |
* | | | | Fix code formatting for QueryMethods#selectRobin Dupret2017-07-161-2/+3
| | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | Merge pull request #29817 from koic/replace_erubis_with_erubi_in_guideRyuta Kamizono2017-07-161-1/+1
|\ \ \ \ \ | |/ / / / |/| | | | Replace Erubis with Erubi in a part of guide [ci skip]
| * | | | Replace Erubis with Erubi in a part of guide [ci skip]Koichi ITO2017-07-161-1/+1
| |/ / /
* | | | Merge pull request #29809 from kamipo/remove_unused_ivarsKasper Timm Hansen2017-07-161-2/+1
|\ \ \ \ | |/ / / |/| | | Remove unused `@last`, `@order_clause`, and `@join_dependency`
| * | | Remove unused `@last`, `@order_clause`, and `@join_dependency`Ryuta Kamizono2017-07-161-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | Using `@last` and `@order_clause` was removed at 8bb5274 and 90d1524. `@join_dependency` was added at b959950 but it is unused in the first place.
* | | | Merge pull request #29771 from ↵Kasper Timm Hansen2017-07-169-22/+24
|\ \ \ \ | |/ / / |/| | | | | | | | | | | kamipo/fix_create_with_using_both_string_and_symbol Fix `create_with` using both string and symbol
| * | | Fix `create_with` using both string and symbolRyuta Kamizono2017-07-169-18/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is related with #27680. Since `where_values_hash` keys constructed by `where` are string, so we need `stringify_keys` to `create_with_value` before merging it.
| * | | Use `where(id: 10)` rather than `where(relation.table[:id].eq(10))`Ryuta Kamizono2017-07-161-5/+5
|/ / / | | | | | | | | | | | | Because Arel is a private API and to describe `where_values_hash` keys constructed by `where` are string.
* | | Merge pull request #29645 from y-yagi/check_component_when_run_app_updateKasper Timm Hansen2017-07-165-23/+60
|\ \ \ | | | | | | | | Do not generate unused components contents in `app:update` task
| * | | Do not generate unused components contents in `app:update` taskyuuji.yaginuma2017-07-165-23/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, `app:update` generates all contents regardless of the component using in application. For example, even if not using Action Cable, `app:update` will generate a contents related to Action Cable. This is a little inconvenient. This PR checks the existence of the component and does not generate unnecessary contents. Can not check all options in this way. However, it will be able to prevent the generation of unnecessary files.
* | | | Merge pull request #29806 from yhirano55/remove_blank_line_in_setupKasper Timm Hansen2017-07-161-2/+3
|\ \ \ \ | |/ / / |/| | | Remove blank lines in setup
| * | | Remove blank lines in setupYoshiyuki Hirano2017-07-161-2/+3
| | | |
* | | | Merge pull request #29679 from kamipo/add_test_case_for_27724Kasper Timm Hansen2017-07-152-0/+12
|\ \ \ \ | | | | | | | | | | Add a test case for overwriting existing condition on associations
| * | | | Add a test case for overwriting existing condition on associationsRyuta Kamizono2017-07-072-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Overwriting existing condition on associations has already supported (23bcc65 for eager loading, 2bfa2c0 for preloading). Fixes #27724. Closes #29154.
* | | | | Merge pull request #29769 from kamipo/remove_extra_order_for_firstKasper Timm Hansen2017-07-152-32/+28
|\ \ \ \ \ | | | | | | | | | | | | Remove extra `.merge!(order: "id")` for `Relation#first` in tests
| * | | | | Remove extra `.merge!(order: "id")` for `Relation#first` in testsRyuta Kamizono2017-07-132-32/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 07e5301, `Relation#first` will order by primary key if no order is defined.
* | | | | | Merge pull request #29770 from y-yagi/fix_boolean_column_migration_scriptKasper Timm Hansen2017-07-153-3/+3
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix boolean column migration script
| * | | | | | Fix boolean column migration scriptyuuji.yaginuma2017-07-133-3/+3
| | | | | | |
* | | | | | | Merge pull request #29802 from EmmaB/masterKasper Timm Hansen2017-07-151-4/+4
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Remove redundant instances of the word 'simply'
| * | | | | | | Remove redundant instances of the word 'simply' from documentation, on the ↵Emma Barnes2017-07-151-4/+4
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | basis that if it was simple, the user wouldn't be reading the docs
* | | | | | | Merge pull request #29798 from kamipo/remove_useless_aliased_table_nameKasper Timm Hansen2017-07-154-18/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Remove useless `aliased_table_name` in `JoinDependency`