diff options
author | Ryan Bigg <radarlistener@gmail.com> | 2011-09-14 18:53:08 +1000 |
---|---|---|
committer | Ryan Bigg <radarlistener@gmail.com> | 2011-09-17 16:08:58 -0700 |
commit | 908f2616d5c2b9e26eb180859f7df529a7a59f08 (patch) | |
tree | 53a2c86b364945fe1835656a5a7dd7c7630e9b11 /activerecord | |
parent | 663031801cac577a88931cdfe6f062555112f370 (diff) | |
download | rails-908f2616d5c2b9e26eb180859f7df529a7a59f08.tar.gz rails-908f2616d5c2b9e26eb180859f7df529a7a59f08.tar.bz2 rails-908f2616d5c2b9e26eb180859f7df529a7a59f08.zip |
Document ActiveRecord::QueryMethods#select
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index a11b7a3864..4468a38ee6 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -37,6 +37,35 @@ module ActiveRecord relation end + # Works in two unique ways. + # + # First: takes a block so it can be used just like Array#select. + # + # Model.scoped.select { |m| m.field == value } + # + # This will build an array of objects from the database for the scope, + # converting them into an array and iterating through them using Array#select. + # + # Second: Modifies the SELECT statement for the query so that only certain + # fields are retreived: + # + # >> Model.select(:field) + # => [#<Model field:value>] + # + # Although in the above example it looks as though this method returns an + # array, in actual fact it returns a relation object and can have other query + # methods appended to it, such as the other methods in ActiveRecord::QueryMethods. + # + # This method will also take multiple parameters: + # + # >> Model.select(:field, :other_field, :and_one_more) + # => [#<Model field: "value", other_field: "value", :and_one_more: "value">] + # + # Any attributes that do not have fields retreived by a select + # will return `nil` when the getter method for that attribute is used: + # + # >> Model.select(:field).first.other_field + # => nil def select(value = Proc.new) if block_given? to_a.select {|*block_args| value.call(*block_args) } |