aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
Commit message (Collapse)AuthorAgeFilesLines
* refactor to_sql so it does not depend on the to_sql implementation ofAaron Patterson2013-07-081-4/+11
| | | | the connection
* fix to_sql output on eager loaded relationsAaron Patterson2013-07-021-1/+9
|
* remove deprecated implicit join references.Yves Senn2013-06-291-37/+2
|
* Simplify/fix implementation of default scopesJon Leighton2013-06-281-35/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation was necessary in order to support stuff like: class Post < ActiveRecord::Base default_scope where(published: true) scope :ordered, order("created_at") end If we didn't evaluate the default scope at the last possible moment before sending the SQL to the database, it would become impossible to do: Post.unscoped.ordered This is because the default scope would already be bound up in the "ordered" scope, and therefore wouldn't be removed by the "Post.unscoped" part. In 4.0, we have deprecated all "eager" forms of scopes. So now you must write: class Post < ActiveRecord::Base default_scope { where(published: true) } scope :ordered, -> { order("created_at") } end This prevents the default scope getting bound up inside the "ordered" scope, which means we can now have a simpler/better/more natural implementation of default scoping. A knock on effect is that some things that didn't work properly now do. For example it was previously impossible to use #except to remove a part of the default scope, since the default scope was evaluated after the call to #except.
* cleanup whitespace in relation.rbYves Senn2013-06-091-1/+1
|
* Revert "Merge pull request #10539 from davidcelis/ar-sql-improvements"Jon Leighton2013-06-071-1/+5
| | | | | | | | | This reverts commit 257fa6897d9c85da16b7c9fcb4ae3008198d320e, reversing changes made to 94725b81f5588e4b0f43222c4f142c3135941b4b. The build failed https://travis-ci.org/rails/rails/builds/7883546
* ActiveRecord::Relation#blank? should `LIMIT 1`David Celis2013-06-071-5/+1
| | | | | | | | | | | | | | | This is an SQL improvement to ActiveRecord::Relation#blank?. Currently, it calls `to_a` on the Relation, which loads all records in the association, and calls `blank?` on the loaded Array. There are other ways, however, to check the emptiness of an association that are far more performant. `#empty?`, `#exists?` and `#any?` all attach a `LIMIT 1` to the SQL query before firing it off, which is a nice query improvement. `#blank?` should do the same! Bonus performance improvements will also happen for `#present?`, which merely calls the negation of `#blank?` Signed-off-by: David Celis <me@davidcel.is>
* revises the documentation of ActiveRecord::Relation#find_or_create_by [ci skip]Xavier Noria2013-06-011-14/+38
| | | | | | | | | | | | | | * Inspect uses double quotes. * Inspect puts a hash as in #<User ...>. * Documents the return value, and makes explicit it can be an invalid record. * Documents the method is not atomic. * Documents a way to handle UNIQUE contraint violations in the event of a race condition. * Removes the "Examples" header according to our guidelines.
* `implicit_readonly` is being removed in favor of calling `readonly` explicitlyYves Senn2013-05-271-5/+1
|
* cleanup whitespace in `active_record/relation.rb`.Yves Senn2013-05-271-4/+4
|
* include bind values from the default scopeAaron Patterson2013-05-171-2/+4
|
* Move #proxy_association method to AssociationRelationJon Leighton2013-05-101-1/+1
|
* Added :nodoc: for private methodsNoemj2013-04-301-3/+3
|
* Moved update_record logic to relation.rbNoemj2013-04-301-11/+25
|
* Refactor CollectionProxy#scope to avoid calling #extend.James Golick2013-04-021-1/+1
|
* :uniq is still a valid relation option since it was only silentlyRafael Mendonça França2013-04-011-1/+1
| | | | | | | | deprecated Fixes activerecord-deprecated_finders build. https://travis-ci.org/rails/activerecord-deprecated_finders/builds/5964703
* entirelyby => 'entirely by'Neeraj Singh2013-03-271-1/+1
|
* Fixed typos in activerecordPrathamesh Sonpatki2013-03-271-1/+1
|
* make it possible to disable implicit join references.Yves Senn2013-03-151-2/+6
| | | | Closes #9712.
* rename `Relation#uniq` to `Relation#distinct`. `#uniq` still works.Yves Senn2013-03-151-1/+7
| | | | | | | | The similarity of `Relation#uniq` to `Array#uniq` is confusing. Since our Relation API is close to SQL terms I renamed `#uniq` to `#distinct`. There is no deprecation. `#uniq` and `#uniq!` are aliases and will continue to work. I also updated the documentation to promote the use of `#distinct`.
* Remove unused return value, because collecting_queries_for_explain isn't ↵kennyj2013-03-061-2/+1
| | | | public API.
* fix the sql that is generated from scopingNeeraj Singh2013-03-031-1/+2
|
* remove AR auto-explain (config.auto_explain_threshold_in_seconds)Yves Senn2013-02-241-11/+1
| | | | | | | | | | We discussed that the auto explain feature is rarely used. This PR removes only the automatic explain. You can still display the explain output for any given relation using `ActiveRecord::Relation#explain`. As a side-effect this should also fix the connection problem during asset compilation (#9385). The auto explain initializer in the `ActiveRecord::Railtie` forced a connection.
* Improve relation docs about to_sql and where_values_hashCarlos Antonio da Silva2013-01-191-4/+4
| | | | | | | | * User class instead of Users. * #where_values_hash does not change the value to downcase as the example was showing. [ci skip]
* Fix .update_all and .delete_all when using a condition on a joined tableDerek Kraan2013-01-111-2/+2
| | | | | | | | | in a default_scope. `Model.joins(...).where(condition_on_joined_table).update_all` / `delete_all` worked, but the same operation implemented with a default_scope generated a SQL error because ActiveRecord ignored the join but implemented the where condition anyways.
* Rename update_attributes method to update, keep update_attributes as an aliasAmparo Luna + Guillermo Iguaran2013-01-031-1/+1
|
* Remove observers and sweepersRafael Mendonça França2012-11-281-6/+3
| | | | | | | | They was extracted from a plugin. See https://github.com/rails/rails-observers [Rafael Mendonça França + Steve Klabnik]
* Move initialize_copy method around to let new method / build alias closerCarlos Antonio da Silva2012-11-241-8/+8
|
* 1.9 Syntax related changesAvnerCohen2012-11-101-1/+1
|
* Another batch of hash syntax changes to comment, this time around, I tried ↵AvnerCohen2012-10-231-5/+5
| | | | to keep 'output' messages untouched.
* nodoc the first_or_create methods and document alternativesJon Leighton2012-10-191-37/+18
|
* Add Relation#find_or_create_by and friendsJon Leighton2012-10-191-0/+26
| | | | | | | This is similar to #first_or_create, but slightly different and a nicer API. See the CHANGELOG/docs in the commit. Fixes #7853
* Move two hotspots to use Hash[] rather than Hash#dupAaron Patterson2012-10-151-3/+5
| | | | https://bugs.ruby-lang.org/issues/7166
* Remove mass_assignment_options from ActiveRecordGuillermo Iguaran2012-09-161-6/+6
|
* Merge pull request #6606 from amatsuda/ar_relation_model_methodRafael Mendonça França2012-08-211-0/+1
|\ | | | | AR::Relation#model would be a better API than AR::Relation#klass
| * AR::Relation#model would be a better API than AR::Relation#klassAkira Matsuda2012-06-031-0/+1
| |
* | Merge pull request #7133 from roshats/fix_update_all_with_blank_argumentCarlos Antonio da Silva2012-08-151-1/+3
|\ \ | | | | | | | | | Change Relation#update_all with blank argument to raise an ArgumentError instead of trying an update with empty fields.
| * | raise ArgumentError if list of attributes to change is empty in update_allRoman Shatsov2012-08-141-1/+3
| | |
* | | load active_support/deprecation in active_support/railsXavier Noria2012-08-021-1/+0
| | |
* | | load active_support/core_ext/object/blank in active_support/railsXavier Noria2012-08-021-1/+0
| | |
* | | Refactor a bitJon Leighton2012-08-011-38/+37
| | | | | | | | | | | | | | | This doesn't change the exernal behavior, but it moves some code around to where I think it properly belongs.
* | | Add `Relation#load`Jon Leighton2012-08-011-2/+12
|/ / | | | | | | | | | | | | | | | | | | | | | | | | This method explicitly loads the records and then returns `self`. Rather than deciding between "do I want an array or a relation?", most people are actually asking themselves "do I want to eager load or lazy load?" Therefore, this method provides a way to explicitly eager-load without having to switch from a `Relation` to an array. Example: @posts = Post.where(published: true).load
* | minor copy edits [ci skip]Vijay Dev2012-07-211-3/+1
| |
* | Fix typosOscar Del Ben2012-07-191-3/+3
| |
* | Fix typos and add nodocs to NullRelationOscar Del Ben2012-07-171-3/+3
| |
* | Improve docs for AR RelationOscar Del Ben2012-07-171-7/+19
| |
* | Add docs for Relation initialize, create and create!Oscar Del Ben2012-07-161-1/+34
| |
* | Don't link to edgeguides in docsOscar Del Ben2012-07-161-1/+1
| |
* | Load all records in Relation#inspectJon Leighton2012-07-071-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A test was failing due to the way that Relation#inspect causes association proxies to ignore unsaved records added to the association. This is fixed by simply calling to_a and letting to_a figure out how to get the records (which, in the case of associations, takes into account new records). I think it is acceptable to do this rather than limiting the query at the database level: * It's what we've done in all released Rails versions up to this point * The goal of the limit is to not flood the console with output - this is the problem we're targeting, rather than the actual loading of the records from the database * You probably want to do something with those records later anyway, otherwise you wouldn't have built a relation for them.
* | Relation#inspect handles doesn't perform a new query on an already-loaded ↵Jon Leighton2012-07-071-1/+4
| | | | | | | | relation