Class: ActiveRecord::Associations::ClassMethods::JoinDependency::JoinBase

Inherits:
Object
  • Object
show all
Defined in:
lib/select_with_include/associations.rb

Instance Method Summary collapse

Instance Method Details

#column_names_with_alias(options = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/select_with_include/associations.rb', line 30

def column_names_with_alias(options = {})
  unless @column_names_with_alias
    @column_names_with_alias = []
    parsed_select = parse_select(options[:select])
    ([primary_key] + (column_names - [primary_key])).each_with_index do |column_name, i|
      unless column_name != primary_key && parsed_select && !(parsed_select[table_name].member?(column_name) || parsed_select[table_name].member?('*') )
        @column_names_with_alias << [column_name, "#{ aliased_prefix }_r#{ i }"]
      end
    end
  end
  return @column_names_with_alias
end

#parse_select(select_options) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/select_with_include/associations.rb', line 43

def parse_select(select_options)
  return false if select_options.nil?
  tokens = select_options.gsub(' ', '').split(',')
  parsed = tokens.inject(Hash.new() {[]}) {|hash, token| tab, col = token.split('.'); hash[tab] = hash[tab] << col; hash}
  return false if parsed.keys.flatten.member? '*'
  return parsed
end