Sha256: f407ea74e8748f93b043144a6cbf0d3cec56163f538e726c3a566cd76099b06c
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module Superstore module BelongsTo class Association attr_reader :owner, :reflection attr_accessor :record_variable delegate :options, to: :reflection def initialize(owner, reflection) @owner = owner @reflection = reflection end def reader unless loaded? if record_id = owner.send(reflection.foreign_key).presence self.record_variable = association_class.find_by_id(record_id) else self.record_variable = nil end @loaded = true end record_variable end def writer(record) self.record_variable = record @loaded = true owner.send("#{reflection.foreign_key}=", record.try(:id)) if reflection.polymorphic? owner.send("#{reflection.polymorphic_column}=", record.class.name) end end def association_class association_class_name.constantize end def association_class_name reflection.polymorphic? ? owner.send(reflection.polymorphic_column) : reflection.class_name end def loaded? @loaded end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
superstore-1.0.0 | lib/superstore/belongs_to/association.rb |