Methods
- aliased_prefix
- aliased_primary_key
- aliased_table_name
- column_names_with_alias
- extract_record
- instantiate
- new
- record_id
Attributes
| [R] | active_record | |
| [R] | table_joins |
Public Class methods
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1360
1360: def initialize(active_record, joins = nil)
1361: @active_record = active_record
1362: @cached_record = {}
1363: @table_joins = joins
1364: end
Public Instance methods
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1366
1366: def aliased_prefix
1367: "t0"
1368: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1370
1370: def aliased_primary_key
1371: "#{ aliased_prefix }_r0"
1372: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1374
1374: def aliased_table_name
1375: active_record.table_name
1376: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1378
1378: def column_names_with_alias
1379: unless @column_names_with_alias
1380: @column_names_with_alias = []
1381: ([primary_key] + (column_names - [primary_key])).each_with_index do |column_name, i|
1382: @column_names_with_alias << [column_name, "#{ aliased_prefix }_r#{ i }"]
1383: end
1384: end
1385: return @column_names_with_alias
1386: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1388
1388: def extract_record(row)
1389: column_names_with_alias.inject({}){|record, (cn, an)| record[cn] = row[an]; record}
1390: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1396
1396: def instantiate(row)
1397: @cached_record[record_id(row)] ||= active_record.instantiate(extract_record(row))
1398: end
[ show source ]
# File vendor/rails/activerecord/lib/active_record/associations.rb, line 1392
1392: def record_id(row)
1393: row[aliased_primary_key]
1394: end