Skip to content

Instantly share code, notes, and snippets.

@corey
Forked from jcf/active_record.rb
Created November 15, 2012 03:49
Show Gist options
  • Save corey/4076528 to your computer and use it in GitHub Desktop.
Save corey/4076528 to your computer and use it in GitHub Desktop.
Backport pluck to Rails 3.1
# config/initializers/extensions/active_record.rb
module ActiveRecord
class Base
class << self
delegate :pluck, to: :scoped
end
end
class CollectionProxy
delegate :pluck, to: :scoped
end
# = Active Record Relation
class Relation
# Returns <tt>Array</tt> with values of the specified column name
# The values has same data type as column.
#
# Examples:
#
# Person.pluck(:id) # SELECT people.id FROM people
# Person.uniq.pluck(:role) # SELECT DISTINCT role FROM people
# Person.where(:confirmed => true).limit(5).pluck(:id)
#
def pluck(column_name)
scope = self.select(column_name)
self.connection.select_values(scope.to_sql).map! do |value|
type_cast_using_column(value, column_for(column_name))
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment