Sha256: cf0872138a59bebe1272d6fb24b783eb3b746af45bc78c53aaa64e3e7a51c681
Contents?: true
Size: 1.26 KB
Versions: 3
Compression:
Stored size: 1.26 KB
Contents
require 'set' module ActiveRecord module Associations class AssociationProxy protected def set_belongs_to_association_for(record) reset_association_cache(record) if @reflection.options[:cached] if @reflection.options[:as] record["#{@reflection.options[:as]}_id"] = @owner.id unless @owner.new_record? record["#{@reflection.options[:as]}_type"] = @owner.class.base_class.name.to_s else record[@reflection.primary_key_name] = @owner.id unless @owner.new_record? end end private def reset_association_cache(record) current_owner = current_owner(record) return unless current_owner current_owner.send(:cache_delete, @reflection) end def current_owner(record) current_owner_id, current_owner_type = if @reflection.options[:as] [ record["#{@reflection.options[:as]}_id"], record["#{@reflection.options[:as]}_type"] ] else [ record[@reflection.primary_key_name], @owner.class.base_class.name.to_s ] end return unless current_owner_id current_owner_type.constantize.find(current_owner_id) end end end end
Version data entries
3 entries across 3 versions & 2 rubygems