diff options
author | Sean Griffin <sean@thoughtbot.com> | 2015-06-19 15:35:35 -0600 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2015-06-19 15:35:35 -0600 |
commit | b644964b2b555798fc4b94d384b98438db863b3f (patch) | |
tree | af3a39838508d3cbce032b20b58889a62c607a05 /activerecord/lib/active_record/relation/query_methods.rb | |
parent | 7d14bd3ff553d6aba11a50b43773bc21ae20f31e (diff) | |
download | rails-b644964b2b555798fc4b94d384b98438db863b3f.tar.gz rails-b644964b2b555798fc4b94d384b98438db863b3f.tar.bz2 rails-b644964b2b555798fc4b94d384b98438db863b3f.zip |
Include `Enumerable` in `ActiveRecord::Relation`
After discussing, we've decided it makes more sense to include it. We're
already forwarding every conflicting method to `to_a`, and there's no
conflation of concerns. `Enumerable` has no mutating methods, and it
just allows us to simplify the code. No existing methods will have a
change in behavior. Un-overridden Enumerable methods will simply
delegate to `each`.
[Sean Griffin & bogdan]
Diffstat (limited to 'activerecord/lib/active_record/relation/query_methods.rb')
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index f85dc35e89..706c99c245 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -242,12 +242,9 @@ module ActiveRecord # Model.select(:field).first.other_field # # => ActiveModel::MissingAttributeError: missing attribute: other_field def select(*fields) - if block_given? - to_a.select { |*block_args| yield(*block_args) } - else - raise ArgumentError, 'Call this with at least one field' if fields.empty? - spawn._select!(*fields) - end + return super if block_given? + raise ArgumentError, 'Call this with at least one field' if fields.empty? + spawn._select!(*fields) end def _select!(*fields) # :nodoc: |