Sha256: ff3497f05a489f721e22aff892f2910401cc9a2c3db293e9e76b6b4ede39b445
Contents?: true
Size: 1.49 KB
Versions: 12
Compression:
Stored size: 1.49 KB
Contents
# Politely lifted from fcheung's selectable_includes plugin for ActiveRecord # https://github.com/fcheung/selectable_includes/blob/master/lib/selectable_includes.rb class ActiveRecord::Base class << self def construct_finder_sql_with_included_associations_with_selectable_includes(options, join_dependency) scope = scope(:find) select_options = options[:select] || (scope && scope[:select]) sql = construct_finder_sql_with_included_associations_without_selectable_includes(options, join_dependency) unless select_options.blank? sql.sub!(/\ASELECT /, "SELECT #{select_options}, ") end sql end alias_method_chain :construct_finder_sql_with_included_associations, :selectable_includes end end class ActiveRecord::Associations::ClassMethods::JoinDependency def instantiate_with_selectable_includes(rows) unless rows.empty? keys_from_select = rows.first.keys.reject {|k| k =~ /\At\d+_r\d+/} join_base.extra_columns = keys_from_select end instantiate_without_selectable_includes(rows) end alias_method_chain :instantiate, :selectable_includes end class ActiveRecord::Associations::ClassMethods::JoinDependency::JoinBase attr_accessor :extra_columns def extract_record_with_selectable_includes(row) record = extract_record_without_selectable_includes(row) extra_columns.inject(record){|record, an| record[an] = row[an]; record} if extra_columns record end alias_method_chain :extract_record, :selectable_includes end
Version data entries
12 entries across 12 versions & 1 rubygems