A very simple utility, for when you want to easily read only a single column from an ActiveRecord model.

Usage:

class Monster < ActiveRecord::Base
  column_reader :name
  column_reader :hairyness, :as => :hirsutenesses
  column_reader :dob

  scope :dangerous, :conditions => {:carnivorous => true}
end

At it’s simplest, it returns the values of just the given column:

Monster.names
# => ['Graham', 'Mike', 'Fuzzly']

The default accessor is the column name pluralized, but using the :as option, another name can be chosen:

Monster.hirsutenesses
# => ['bald', 'very', 'very']

Scopes are respected:

Monster.dangerous.names
# => ['Fuzzly']

And columns are correctly type cast:

Monster.dobs:
# => [#<Date: 4886491/2,0,2299161>, #<Date: 2886491/2,0,2299161>, #<Date: 3886491/2,0,2299161>]