| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
It's not public API, but is not private scoped.
|
| |
|
| |
|
|
|
|
| |
Refs #13658
|
|
|
|
| |
argument
|
| |
|
|\
| |
| | |
#none documentation updated [ci skip]
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This change was necessary because the whitelist wouldn't work.
It would be painful for users trying to update their applications.
This blacklist intent to prevent odd bugs and confusion in code that call mutator
methods directely on the `Relation`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Using the name of an association in `where` previously worked only
if the value was a single `ActiveRecrd::Base` object. e.g.
Post.where(author: Author.first)
Any other values, including `nil`, would cause invalid SQL to be
generated. This change supports arguments in the `where` query
conditions where the key is a `belongs_to` association name and the
value is `nil`, an `Array` of `ActiveRecord::Base` objects, or an
`ActiveRecord::Relation` object.
# Given the Post model
class Post < ActiveRecord::Base
belongs_to :author
end
# nil value finds records where the association is not set
Post.where(author: nil)
# SELECT "posts".* FROM "posts" WHERE "posts"."author_id" IS NULL
# Array values find records where the association foreign key
# matches the ids of the passed ActiveRecord models, resulting
# in the same query as Post.where(author_id: [1,2])
authors_array = [Author.find(1), Author.find(2)]
Post.where(author: authors_array)
# ActiveRecord::Relation values find records using the same
# query as Post.where(author_id: Author.where(last_name: "Emde"))
Post.where(author: Author.where(last_name: "Emde"))
Polymorphic `belongs_to` associations will continue to be handled
appropriately, with the polymorphic `association_type` field added
to the query to match the base class of the value. This feature
previously only worked when the value was a single `ActveRecord::Base`.
class Post < ActiveRecord::Base
belongs_to :author, polymorphic: true
end
Post.where(author: Author.where(last_name: "Emde"))
# Generates a query similar to:
Post.where(author_id: Author.where(last_name: "Emde"), author_type: "Author")
|
|\|
| |
| | |
Spelling and Grammar check [ci skip]
|
| | |
|
| |
| |
| |
| | |
* interpreted as a argument prefix
|
| |
| |
| |
| | |
won't last - aim to switch back to a blacklist for mutator methods.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
|
| |
It is needed for activerecord-depecated_finders
This reverts commit dcff027a5242b20c0c90eb062dddb22ccf51aed9, reversing
changes made to 3a2093984ff49d86db1efeff0c7581e788ecfb9f.
|
|
|
|
|
|
|
|
| |
For PG adapters with custom expression and grouped result
of aggregate functions have not found correct column type
for it. Extract column type from query result.
Closes: #13230
|
|
|
|
| |
Closes #7441
|
|\
| |
| |
| |
| |
| | |
Conflicts:
activesupport/lib/active_support/core_ext/hash/deep_merge.rb
activesupport/lib/active_support/core_ext/hash/keys.rb
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
According to our guideline, we leave 1 space between `#` and `=>`, so we
want `# =>` instead of `#=>`.
Thanks to @fxn for the suggestion.
[ci skip]
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I'm pretty confused about the addition of this method. The documentation
says that it was intended to allow the removal of values from the
default scope (in contrast to #except). However it behaves exactly the
same as except: https://gist.github.com/jonleighton/7537008 (other than
having a slightly enhanced syntax).
The removal of the default scope is allowed by
94924dc32baf78f13e289172534c2e71c9c8cade, which was not a change we
could make until 4.1 due to the need to deprecate things. However after
that change #unscope still gives us nothing that #except doesn't already
give us.
However there *is* a desire to be able to unscope stuff in a way that
persists across merges, which would allow associations to be defined
which unscope stuff from the default scope of the associated model. E.g.
has_many :comments, -> { unscope where: :trashed }
So that's what this change implements. I've also corrected the
documentation. I removed the guide references to #except as I think
unscope really supercedes #except now.
While we're here, there's also a potential desire to be able to write
this:
has_many :comments, -> { unscoped }
However, it doesn't make sense and would not be straightforward to
implement. While with #unscope we're specifying exactly what we want to
be removed from the relation, with "unscoped" we're just saying that we
want it to not have some things which were added earlier on by the
default scope. However in the case of an association, we surely don't
want *all* conditions to be removed, otherwise the above would just
become "SELECT * FROM comments" with no foreign key constraint.
To make the above work, we'd have to somehow tag the relation values
which get added when evaluating the default scope in order to
differentiate them from other relation values. Which is way too much
complexity and therefore not worth it when most use cases can be
satisfied with unscope.
Closes #10643, #11061.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes a bug when merging relations of different classes.
```
Given:
Post.joins(:author).merge(Author.order(name: :desc)).to_sql
Before:
SELECT "posts".* FROM "posts"
INNER JOIN "authors" ON "authors"."id" = "posts"."author_id"
ORDER BY "posts"."name" DESC
After:
SELECT "posts".* FROM "posts"
INNER JOIN "authors" ON "authors"."id" = "posts"."author_id"
ORDER BY "authors"."name" DESC
```
|
|/ |
|
|
|
|
| |
named where condition.
|
|
|
|
| |
94924dc32baf78f13e289172534c2e71c9c8cade
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* master: (23 commits)
Escape the parentheses in the default function regexp
Update docs on Tilt::Template in Asset Pipeline guide
Fix loading a sql structure file on postgres when the file's path has whitespace in it
remove trailing whitespace added with b057765 [ci skip].
Allow unscope to work with `where.not`
Raise an exception when model without primary key calls .find_with_ids
Process sub-query relation's binding values
Instrument the generation of Action Mailer messages
Remove extra variable creation and merge.
In Relation#empty? use #exists? instead of #count.
[ci skip] avoid deprecation warning in sample code
Convert Fixnum into String the port number in MySQL
Fix some indentation on autosave association
Make define_non_cyclic_method simpler
Add Sass gobbling info to asset pipeline docs
Ensure the state is clean after one failure
Fix typo in form_helper.rb
add a new local variable to track if digests are being stored, to ensure the cleanup works correctly
[ci skip] Fix number of methods added by association.
update digestor code based on review
...
|
| |\
| | |
| | |
| | |
| | |
| | |
| | | |
Inline bind values for sub-queries generated for Relation in where
Conflicts:
activerecord/CHANGELOG.md
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Generated sub-query for Relation as array condition for `where` method
did not take in account its bind values, in result generates invalid SQL query.
Fixed by adding sub-query relation's binding values to base relation
Closes: #12586
|
| | |
| | |
| | |
| | |
| | |
| | | |
Allows you to call #unscope on a relation with negative equality operators,
i.e. Arel::Nodes::NotIn and Arel::Nodes::NotEqual that have been generated
through the use of where.not.
|
| |/ |
|
| |
| |
| |
| |
| | |
Conflicts:
activerecord/lib/active_record/relation/finder_methods.rb
|
| | |
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* master: (44 commits)
grammar fix (reverted in e9a1ecd)
Revert "fixed a doc bug in the CHANGELOG.md s/does no longer depend on/no longer depends on/"
Add missed require making `enable_warnings` available
Prepare generated Gemfile for Capistrano 3
Added --model-name option scaffold_controller_generator.
read the association instead of sending
we should have unique sponsorable ids in the fixtures at least
simplify populating the ordering hash
the preloader for the RHS has all the preloaded records, so ask it
only calculate offset index once. #12537
Remove size alias for length validation
Fix `singleton_class?`
Minor Refactoring to `NumberHelper#number_to_human`
`$SAFE = 4;` has been removed with Ruby 2.1
scope_chain should not be mutated for other reflections
Remove `default_primary_key_type` and extract contains of `native_database_types` to a constant since they aren't conditional now in SQLite3Adapter. Makes it more like other adapters.
cleanup changelog entry format. [ci skip]
Extract a function to determine if the default value is a function
Push default_function to superclass to avoid method check
Dump the default function when the primary key is uuid
...
Conflicts:
activerecord/lib/active_record/relation/finder_methods.rb
|
| |
| |
| |
| | |
`Relation#maximum`, `Relation#calculate`, `perform_calculation`, `NullRelation#calculate` as they isn't used anymore.
|
| | |
|
| |\
| | |
| | | |
Includes with persistent select, fixes #11773
|
| | |
| | |
| | |
| | | |
was overwritten.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
I don't really like passing the block, but this seems easiest for now
|
| | | |
|
| | | |
|
|/ / |
|
| |
| |
| |
| | |
Merge JoinDependency objects as outer joins
|
| | |
|
| | |
|