v3: reduce object allocations from polyorphic relations patch

This commit is contained in:
Konstantin Haase 2015-05-11 17:14:24 +02:00
parent ea23fd3b7e
commit 16c5106cd3

View File

@ -18,6 +18,13 @@ module Travis::API::V3
# in ActiveRecord::Base#[]=, so we don't break other code by accidentially writing the prefixed version to the # in ActiveRecord::Base#[]=, so we don't break other code by accidentially writing the prefixed version to the
# database. # database.
module BelongsTo module BelongsTo
class BaseClass
attr_reader :name
def initialize(klass)
@name = klass.polymorphic_name
end
end
module ClassMethods module ClassMethods
def polymorfic_foreign_types def polymorfic_foreign_types
@polymorfic_foreign_types ||= [] @polymorfic_foreign_types ||= []
@ -28,8 +35,9 @@ module Travis::API::V3
super super
end end
def name def base_class
caller_locations.first.base_label == 'add_constraints'.freeze ? polymorphic_name : super return super unless caller_locations.first.base_label == 'add_constraints'.freeze
@base_class ||= BaseClass.new(super)
end end
def polymorphic_name def polymorphic_name