diff options
author | namusyaka <namusyaka@gmail.com> | 2017-02-10 02:04:28 +0900 |
---|---|---|
committer | Jeremy Daer <jeremydaer@gmail.com> | 2017-02-12 18:10:15 -0700 |
commit | e8f170cec11873bfaab68d8b24737adb7b9331c6 (patch) | |
tree | f23ee5b34de5411a0a5e7e54af49a931ad03ad66 /activerecord/test | |
parent | acdbe70a02f4eec9e7dc085dfce615a3ddaf9d37 (diff) | |
download | rails-e8f170cec11873bfaab68d8b24737adb7b9331c6.tar.gz rails-e8f170cec11873bfaab68d8b24737adb7b9331c6.tar.bz2 rails-e8f170cec11873bfaab68d8b24737adb7b9331c6.zip |
Make `table_name=` reset current statement cache
So queries are not run against the previous table name.
Closes #27953
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/statement_cache_test.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/activerecord/test/cases/statement_cache_test.rb b/activerecord/test/cases/statement_cache_test.rb index f45f63c68e..ab81ee1ad6 100644 --- a/activerecord/test/cases/statement_cache_test.rb +++ b/activerecord/test/cases/statement_cache_test.rb @@ -105,5 +105,31 @@ module ActiveRecord refute_equal book, other_book end + + def test_find_by_does_not_use_statement_cache_if_table_name_is_changed + book = Book.create(name: "my book") + + Book.find_by(name: "my book") # warming the statement cache. + + # changing the table name should change the query that is not cached. + Book.table_name = :birds + assert_nil Book.find_by(name: "my book") + ensure + Book.table_name = :books + end + + def test_find_does_not_use_statement_cache_if_table_name_is_changed + book = Book.create(name: "my book") + + Book.find(book.id) # warming the statement cache. + + # changing the table name should change the query that is not cached. + Book.table_name = :birds + assert_raise ActiveRecord::RecordNotFound do + Book.find(book.id) + end + ensure + Book.table_name = :books + end end end |