| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |\ \
| | | |
| | | | |
Idempotent counter caches, fix concurrency issues with counter caches
|
| | | | |
|
| | | | |
|
| |/ / |
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fix insertion of records for hmt association with scope
Conflicts:
activerecord/CHANGELOG.md
|
| | | | |
|
|\| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* master: (122 commits)
Rails.application should be set inside before_configuration hook
remove check for present? from delete_all
Remove useless begin..end
Build the reverse_order on its proper method.
Use connection-specific bytea escaping
Ignore order when doing count.
make enums distinct per class
Remove unused `subclass_controller_with_flash_type_bar` var from flash test.
fix CollectionProxy delete_all documentation
Added OS X specific commands to installation guide [ci skip] Recommended using homebrew for installing MySQL and PostgreSQL
Fix setup of adding _flash_types test.
Use SVG version of travis build status badge [skip ci]
W3C CSP document moved to gihub.io URL [ci skip]
sprockets-rails was released
Fix the test defining the models in the right place
Add CHANGELOG entry for #11650 [ci skip]
Declare the assets dependency
Use sass-rails 4.0.3
Make possible to use sprockets-rails 2.1
add missing parentheses to validates_with documentation [skip ci]
...
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Passing in a blank string is a bug so there's no reason
to check for a blank string.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This method no longer returns an array of all records that
have been removed. Correct documentation to reflect this change.
See issue 14546
|
| |\ \ \
| | | | |
| | | | |
| | | | | |
Renamed private methods _create_record and _update_record
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is to ensure that they are not accidentally called by the app code.
They are renamed to _create_record and _update_record respectively.
Closes #11645
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
CollectionProxy should be able to reuse the behavior (methods) of its parent class,
but with its own state. This change allows CollectionProxy to use the arel object
corresponding to its association's scope.
|
| |\ \ \ \
| | |_|_|/
| |/| | |
| | | | |
| | | | | |
eileencodes/fix_delete_all_to_not_use_IN_statement
Fix delete all to not produce sql in statement
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When delete_all is run on a CollectionProxy and has a
dependency of delete_all the SQL that is produced has an IN
statement. (DELETE FROM `associated_model` where `associated_model`
.`parent_id` = 1 AND `associated_model`.`id` IN (1, 2, 3...)).
This only happens if the association is not loaded (both loaded
and non-loaded delete_all should behave the same. This is a huge
problem when it comes to deleting many records because the query
becomes very slow. Instead the SQL produced should be (DELETE FROM
`assoicated_model` where `associated_model`.`parent_model_id`=1).
I fixed this by making sure the check for loaded and destroy also
makes sure that the dependent is not delete_all, so the conditional
goes to the else and deletes the records directly without the IN
statement.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The new method relies on AR::Associations::Association knowing about both reflection and a model class.
AR::Base#association now raises a descriptive error when trying to access non-existent associations. Previously it would blow up with a confusing NoMethodError: undefined method `association_class' for nil:NilClass.
|
| |/ / /
| | | |
| | | |
| | | | |
Defer to Association#klass instead of having a custom/duplicate code.
|
| |\ \ \
| | | | |
| | | | | |
Pass a base relation to build_default_scope when joining
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This allows the default scope to be built using the current table alias.
Resolves #12770
|
|\| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* master: (96 commits)
clarify CHANGELOG [ci skip].
Fix Generation of proper migration when ActiveRecord::Base.pluralize_table_names = false.
update comments to reflect that options support is not available
synchronize changelogs and 4.1 release notes. [ci skip]
do not rely on method_missing hitting arel
use ARel factory methods for building AST nodes
Fix date_select option overwriting html classes
- Rename `increment_or_decrement` to an apt `set_cache_value` since it actually doesn't increment/decrement in localstore.
Check if any sqlite files are not included in the gitignore
Remove sqlite3 lines from .gitignore if the application is not using sqlite3.
Adding active_model in Rails::Info
Clean up tables after each test.
Swapped parameters of assert_equal in assert_select
Update test helper to use latest Digestor API
Digestor should just rely on the finder to know about the format and the variant -- trying to pass it back in makes a mess of things (oh, and doesnt work)
Log the full path, including variant, that the digestor is trying to find
Fix for digestor to consider variants for partials -- this still needs more testing!!
fix log_tags request object grammar
Extract with_example_table into helper method.
test for structure:dump without schema information table. refs eafec46
...
Conflicts:
activerecord/test/cases/relation/where_chain_test.rb
|
| | | | | |
|
|\| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* master:
passing an instance of an AR object to `find` is deprecated
passing an ActiveRecord object to `exists?` is deprecated.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Pass the id of the object to the method by calling `.id` on the AR
object.
|
|\| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* master: (108 commits)
make tests pass on Ruby 2.2
Use Sqlite3 adapter in examples
use the body proxy to freeze headers
just ask the response for the commit status, we do not need to ask the jar
only write the jar if the response isn't committed
Fix a grammatical error in the i18n guide [ci skip]
use method_defined? to check whether or not a method is defined
Enhance docs for update_attribute [ci-skip]
Change usec to 0 on tests that compare seconds
Unit test for mysql quote time usec
Changelog entry for mysql56 microseconds
Test microsecond on mysql 5.6
MySQL 5.6 and later supports microsecond precision in datetime.
[ci skip] Add documentation for original_fullpath.
Remove mocking on save, when not necessary
comment why we are modifying global state. [ci skip]
`change_table` supports `citext`. Follow up to #12523.
Removed unnecessary command "application"
register OID for PostgreSQL citex datatype [Troy Kruthoff & Lachlan Sylvester]
Fixes STI when 2+ levels deep.
...
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Apparently we've been using a buggy feature for the past 6 years:
https://bugs.ruby-lang.org/issues/9593
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When replacing a has_many association with the same one, there is no
need to do a round-trip to the db to create/and drop a new transaction.
[fixes #14220]
|
|\| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* master: (55 commits)
[ci skip] Move association class method notes
extract common code in `uuid_test.rb`.
move PostgreSQL UUID tests from `datatype_test.rb` to `uuid_test.rb`.
[ci skip] remove guide section on models in migrations
test case for custom PostgreSQL enum type.
Remove inclusion of rubysl gem for rbx on generated Gemfile
let `insert_record` actuall save the object.
[skip ci] Fix test name typo in app generator tests.
travis s/2.1.0/2.1.1
Bump version of bcrypt gem
Skip test_migrate_revert_add_index_with_name if databases do not allow to create duplicate indexes on the same columns
Optimize getting started guide images, and use png instead of jpg
:scissors: [ci skip]
Point master changelogs to 4-1-stable branch
Add missing parantheses in index_exists?
`ActionDispatch::Head` was replaced by `Rack::Head`. Closes #14191.
[skip ci] Standardized punctuation.
[skip ci] Fix typo in link_to :method option description
refactor, with_locale is not needed because I18n is mocked.
Fix ActionView label translation for more than 10 nested elements
...
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`before_add` callbacks are fired before the record is saved on
`has_and_belongs_to_many` assocations *and* on `has_many :through`
associations. Before this change, `before_add` callbacks would be fired
before the record was saved on `has_and_belongs_to_many` associations, but
*not* on `has_many :through` associations.
Fixes #14144
|
| | | | |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
constructor"
This reverts commit f9e4c3c7c0c4152b62fe9202a9d12262884bb118.
[fixes #14116]
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* master: (311 commits)
Add a missing changelog entry for #13981 and #14035
Revert "Fixed plugin_generator test"
implements new option :month_format_string for date select helpers [Closes #13618]
add factory methods for empty alias trackers
guarantee a list in the alias tracker so we can remove a conditional
stop exposing table_joins
make most parameters to the AliasTracker required
make a singleton for AssociationScope
pass the association and connection to the scope method
pass the tracker down the stack and construct it in the scope method
clean up add_constraints signature
remove the reflection delegate
remove klass delegator
remove railties changes. fixes #14054
remove chain delegate
remove scope_chain delegate
Add verb to sanitization note
fix path shown in mailer's templates
updated Travis build status image url
fix guide active_support_core_extensions. add Note to String#indent [ci skip]
...
Conflicts:
activerecord/lib/active_record/associations/join_dependency.rb
activerecord/test/cases/associations/association_scope_test.rb
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If we know the alias tracker is empty, we can create one that doesn't
use a hash with default block for counting.
ActiveRecord::Base.establish_connection(adapter: 'sqlite3',
database: ':memory:')
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
t.integer :comments_count
end
create_table :comments, force: true do |t|
t.integer :post_id
end
end
class Post < ActiveRecord::Base; has_many :comments; end
class Comment < ActiveRecord::Base; belongs_to :post, counter_cache: true; end
10.times { Comment.create!(post: Post.create!) }
record = Post.first
association_name = :comments
Benchmark.ips do |x|
reflection = record.class.reflect_on_association(association_name)
association = reflection.association_class.new(record, reflection)
x.report('assoc') do
reflection.association_class.new(record, reflection)
end
x.report('reader') do
association.reader;nil
end
x.report('combined') do
reflection.association_class.new(record, reflection).reader;nil
end
end
[aaron@higgins rails (tracker)]$ TEST=ips bundle exec ruby ../1bb5456b5e035343df9d/gistfile1.rb
-- create_table(:posts, {:force=>true})
-> 0.0062s
-- create_table(:comments, {:force=>true})
-> 0.0003s
Calculating -------------------------------------
assoc 833 i/100ms
reader 28703 i/100ms
combined 839 i/100ms
-------------------------------------------------
assoc 9010.3 (±3.8%) i/s - 44982 in 5.000022s
reader 3214523.4 (±5.5%) i/s - 16016274 in 5.001136s
combined 8841.0 (±5.8%) i/s - 44467 in 5.049269s
[aaron@higgins rails (tracker)]$ TEST=ips bundle exec ruby ../1bb5456b5e035343df9d/gistfile1.rb
-- create_table(:posts, {:force=>true})
-> 0.0060s
-- create_table(:comments, {:force=>true})
-> 0.0003s
Calculating -------------------------------------
assoc 888 i/100ms
reader 29217 i/100ms
combined 900 i/100ms
-------------------------------------------------
assoc 9674.3 (±3.3%) i/s - 48840 in 5.054022s
reader 2988474.8 (±6.9%) i/s - 14842236 in 4.998230s
combined 9674.0 (±3.1%) i/s - 48600 in 5.028694s
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
This helps with our sanity. The class is internal, we can refactor to a
"nice" API later.
|
| | |
| | |
| | |
| | |
| | | |
AssociationScope no longer maintains state, so we're safe to keep a
singleton and save on GC time
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|