Sha256: ff12567edc08f42a50645743c1789d56f6151e41fa4d3e9cee123f1bcf4bc3ed
Contents?: true
Size: 1.25 KB
Versions: 83
Compression:
Stored size: 1.25 KB
Contents
# frozen_string_literal: true module ActiveRecord module Associations # = Active Record Has One Through Association class HasOneThroughAssociation < HasOneAssociation # :nodoc: include ThroughAssociation private def replace(record, save = true) create_through_record(record, save) self.target = record end def create_through_record(record, save) ensure_not_nested through_proxy = through_association through_record = through_proxy.load_target if through_record && !record through_record.destroy elsif record attributes = construct_join_attributes(record) if through_record && through_record.destroyed? through_record = through_proxy.tap(&:reload).target end if through_record if through_record.new_record? through_record.assign_attributes(attributes) else through_record.update(attributes) end elsif owner.new_record? || !save through_proxy.build(attributes) else through_proxy.create(attributes) end end end end end end
Version data entries
83 entries across 80 versions & 8 rubygems