Plugins - Values Of

StarAdd to favorites

Adds a values_of class method to ActiveRecord::Base classes.

Under the hood is simply does a construct_finder_sql, forcing :select to be whatever you pass in the first argument, using that to call connection.select_values and (optionally) type_cast()ing the resulting values.

Aside from being prettier than passing a honking long SQL string to connection.select_values, the use of construct_finder_sql also ensures that any with_scope() in effect will be honored.

USAGE:

values_of(colspec, options = {}, &block)

  • colspec can be a:

Symbol - in which case you are selecting that column and (unless you pass a block) you want the in-built rails type-casting to turn the raw text sql result into the relevant type.

String - an sql expression you want to use for the :select portion of your query. Note that if you pass a String then values_of won’t try to automatically type_cast your returned values. See the info about &block below.

  • options are anything normally accepted by ActiveRecord::Base#find.
  • &block is an optional block that will be collect()ed on your returned string

values.

Note that &block overrides any implicit type_cast()ing that would be done if you pass a Symbol as a colspec.

EXAMPLES:

Project.values_of(:created_on, :limit => 10) # SELECT projects.`created_on` FROM projects LIMIT 10 # [Date, Date, Date, … ]

Project.values_of(‘created_on’, :limit => 10) # SELECT created_on FROM projects LIMIT 10 # ["2006-01-24", "2006-02-21", .…]

Project.values_of("distinct DATE_FORMAT(created_on,’%Y-%m-1’)", :limit => 10) # SELECT distinct DATE_FORMAT(created_on,’%Y-%m-1’) FROM projects LIMIT 10 # ["2006-01-1", "2006-02-1", "2006-03-1", .…]

Project.values_of("distinct DATE_FORMAT(created_on,’%Y-%m-1’)", :limit => 10) do |raw_val|

  raw_val.to_date

end # SELECT distinct DATE_FORMAT(created_on,’%Y-%m-1’) FROM projects LIMIT 10 # [Date, Date, Date, … ]

User.find(1).projects.values_of(:id) # SELECT projects.`id` FROM projects WHERE (projects.user_id = 1) [1, 8, 16, …]

Trevor Squires

http://svn.protocool.com/public/plugins/values_of

  • Currently 0.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Assets

Tags

Comments

Add a comment

Search Plugins

Query syntax

Plugins by Category

Sponsors

Rails Kits: Get Code. Get Moving.

Have a comment?