- 31 7月, 2019 18 次提交
-
-
由 Akira Matsuda 提交于
-
由 Kasper Timm Hansen 提交于
Merge pull request #36708 from rails/has-one-polymorphic-touch-dont-cache-association-result-inside-create-transaction Polymorphic has_one touch: Don't cache association result inside crea…
-
由 Ryuta Kamizono 提交于
fix a typo
-
由 yamato-payforward 提交于
-
由 Kasper Timm Hansen 提交于
In case of a polymorphic association there's no automatic inverse_of to assign the inverse record. So to get the record there needs to be a query executed, however, if the query fires within the transaction that's trying to create the associated record, no record can be found. And worse, the nil result is cached on the association so after the transaction commits the record can't be found. That's what happens if touch is enabled on a polymorphic has_one association. Consider a Comment with a commentable association that needs to be touched. For `Comment.create(commentable: Post.new)`, the existing code essentially does `commentable.send(:comment)` within the create transaction for the comment and thus not finding the comment. Now we're purposefully clearing the cache in case we've tried accessing the association within the transaction and found no object. Before: ``` kaspth-imac 2.6.3 ~/code/rails/activerecord master *= ARCONN=postgresql bin/test test/cases/associations/has_one_associations_test.rb -n /commit/ Using postgresql Run options: -n /commit/ --seed 46022 D, [2019-07-19T03:30:37.864537 #96022] DEBUG -- : Chef Load (0.2ms) SELECT "chefs".* FROM "chefs" WHERE "chefs"."employable_id" = $1 AND "chefs"."employable_type" = $2 LIMIT $3 [["employable_id", 1], ["employable_type", "DrinkDesignerWithPolymorphicTouchChef"], ["LIMIT", 1]] D, [2019-07-19T03:30:37.865013 #96022] DEBUG -- : Chef Create (0.2ms) INSERT INTO "chefs" ("employable_id", "employable_type") VALUES ($1, $2) RETURNING "id" [["employable_id", 1], ["employable_type", "DrinkDesignerWithPolymorphicTouchChef"]] D, [2019-07-19T03:30:37.865201 #96022] DEBUG -- : TRANSACTION (0.1ms) RELEASE SAVEPOINT active_record_1 D, [2019-07-19T03:30:37.874136 #96022] DEBUG -- : TRANSACTION (0.1ms) ROLLBACK D, [2019-07-19T03:30:37.874323 #96022] DEBUG -- : TRANSACTION (0.1ms) ROLLBACK F Failure: HasOneAssociationsTest#test_polymorphic_has_one_with_touch_option_on_create_wont_cache_assocation_so_fetching_after_transaction_commit_works [/Users/kaspth/code/rails/activerecord/test/cases/associations/has_one_associations_test.rb:716]: --- expected +++ actual @@ -1 +1 @@ -#<Chef id: 1, employable_id: 1, employable_type: "DrinkDesignerWithPolymorphicTouchChef", department_id: nil, employable_list_type: nil, employable_list_id: nil> +nil ``` After: ``` kaspth-imac 2.6.3 ~/code/rails/activerecord master *= ARCONN=postgresql bin/test test/cases/associations/has_one_associations_test.rb -n /commit/ Using postgresql Run options: -n /commit/ --seed 46022 D, [2019-07-19T03:30:22.479387 #95973] DEBUG -- : Chef Create (0.3ms) INSERT INTO "chefs" ("employable_id", "employable_type") VALUES ($1, $2) RETURNING "id" [["employable_id", 1], ["employable_type", "DrinkDesignerWithPolymorphicTouchChef"]] D, [2019-07-19T03:30:22.479574 #95973] DEBUG -- : TRANSACTION (0.1ms) RELEASE SAVEPOINT active_record_1 D, [2019-07-19T03:30:22.482051 #95973] DEBUG -- : Chef Load (0.1ms) SELECT "chefs".* FROM "chefs" WHERE "chefs"."employable_id" = $1 AND "chefs"."employable_type" = $2 LIMIT $3 [["employable_id", 1], ["employable_type", "DrinkDesignerWithPolymorphicTouchChef"], ["LIMIT", 1]] D, [2019-07-19T03:30:22.482317 #95973] DEBUG -- : TRANSACTION (0.1ms) ROLLBACK D, [2019-07-19T03:30:22.482437 #95973] DEBUG -- : TRANSACTION (0.1ms) ROLLBACK . Finished in 0.088498s, 11.2997 runs/s, 22.5994 assertions/s. 1 runs, 2 assertions, 0 failures, 0 errors, 0 skips ``` Notice the select now fires after the commit.
-
由 Ryuta Kamizono 提交于
Fix typo submited → submitted
-
由 hc0208 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Akira Matsuda 提交于
-
由 Ryuta Kamizono 提交于
Fix typo in autoload documentation [ci skip]
-
由 Erik Pearson 提交于
-
- 30 7月, 2019 12 次提交
-
-
由 Javan Makhmali 提交于
Adds an attachment button to the Trix toolbar that improves overall file upload usability, especially on mobile devices where files can't be dragged / dropped. References: - https://github.com/basecamp/trix/releases/tag/1.2.0 - https://github.com/basecamp/trix/pull/619 - https://github.com/basecamp/trix/issues/582
-
由 Prem Sichanugrist 提交于
Fix a/an usage on `phone_to` documentation. [ci skip]
-
由 Prem Sichanugrist 提交于
Fix comma usage on project's README.md [ci skip]
-
由 haruyuki97 提交于
-
由 Rifatul Islam Chayon 提交于
A very minor change of comma usage.
-
由 Ryuta Kamizono 提交于
Preserve user supplied joins order as much as possible
-
由 Ryuta Kamizono 提交于
To suppress the following warnings in tests. ``` ~/rails/activerecord/lib/active_record/scoping/named.rb:190: warning: method redefined; discarding old not_sent ~/rails/activerecord/lib/active_record/scoping/named.rb:190: warning: previous definition of not_sent was here ```
-
由 Ryuta Kamizono 提交于
Currently, string joins are always applied as last joins part, and Arel join nodes are always applied as leading joins part (since #36304), it makes people struggled to preserve user supplied joins order. To mitigate this problem, preserve the order of string joins and Arel join nodes either before or after of association joins. Fixes #36761. Fixes #34328. Fixes #24281. Fixes #12953.
-
由 Vipul A M 提交于
[ci skip] Fix unclosed tags in `Inflector` docs
-
由 vzvu3k6k 提交于
-
由 John Hawthorn 提交于
Move DatabaseAlreadyExists detection to DB adapter
-
由 Ryuta Kamizono 提交于
-
- 29 7月, 2019 10 次提交
-
-
由 John Hawthorn 提交于
Previously it was the responsibility of the database tasks to translate the invalid statement from creating a duplicate database into an ActiveRecord::Tasks::DatabaseAlreadyExists error. It's actually easier for us to do this detection inside of the adapter, where we already do a case statement on the return code to translate the error. This commit introduces ActiveRecord::DatabaseAlreadyExists, a subclass of StatementInvalid, and updates both AbstractMysqlAdapter and PostgresqlAdapter to return this more specific exception in that case. Because this is a subclass of the old exception, StatementInvalid, it should be backwards compatible with any code expecting that from create_database. This works for both create_database and exectute("CREATE DATABASE")
-
由 Carlos Antonio da Silva 提交于
Using `(raise FooError, "error")` is like forcing a "new scope" around the `raise` call, it's simpler to just wrap the `raise` arguments with parentheses just like any other method call would.
-
由 Ryuta Kamizono 提交于
Enabled matches_regex for MySql
-
由 James Pearson 提交于
Previously matches_regex was only availble on PostgreSql, this will enable it for MySql Usage example: users = User.arel_table; users = User.arel_table; User.where(users[:email].matches_regexp('(.*)\@gmail.com')) Update activerecord/test/cases/arel/visitors/mysql_test.rb Co-Authored-By: NRyuta Kamizono <kamipo@gmail.com>
-
由 Ryuta Kamizono 提交于
Documentation for ActionMailer's SMTP over SSL/TLS option [ci skip]
-
由 David Roetzel 提交于
Add missing bullet point to make clear this is actually a separate option from `:openssl_verify_mode`. Add `:ssl/:tls`-option to guides as well [ci skip]
-
由 Robin Dupret 提交于
-
由 Ryuta Kamizono 提交于
Remove redundant empty line when we don't use system test
-
由 meganemura 提交于
-
由 Akira Matsuda 提交于
-