module ProtoCool module ValuesOf def values_of(colspec, options = {}, &block) ar_column = nil case colspec when Symbol select_string = "#{table_name}.#{connection.quote_column_name(colspec)}" ar_column = columns_hash[colspec.to_s] when String select_string = colspec else raise ArgumentError, "I don't know how to process a select of: #{colspec.inspect}" end raw_values = connection.select_values(construct_finder_sql(options.merge(:select => select_string)), 'values_of') return raw_values.collect(&block) unless block.nil? return raw_values.collect {|v| ar_column.type_cast(v) } unless ar_column.nil? raw_values end end end