class EntitySchema::Fields::ObserverBelongsTo

Doc

Attributes

fk_field[R]
object_field[R]
object_pk[R]

Public Class Methods

new(fk_belongs_to, object_belongs_to, object_pk:) click to toggle source
# File lib/entity_schema/fields/observer_belongs_to.rb, line 9
def initialize(fk_belongs_to, object_belongs_to, object_pk:)
  @fk_field     = fk_belongs_to
  @object_field = object_belongs_to
  @object_pk    = object_pk
end

Public Instance Methods

fk_changed(new_fk, obj) click to toggle source
# File lib/entity_schema/fields/observer_belongs_to.rb, line 15
def fk_changed(new_fk, obj)
  object = object_field.get(obj)
  return if object.nil?
  old_fk = object.public_send(object_pk)
  object_field.set(obj, nil) if new_fk != old_fk
end
object_changed(new_object, obj) click to toggle source
# File lib/entity_schema/fields/observer_belongs_to.rb, line 22
def object_changed(new_object, obj)
  new_pk =
    case new_object
    when Hash then new_object[object_pk]
    when nil  then nil
    else           new_object.public_send(object_pk)
    end
  fk_field.set(obj, new_pk, notify_observer: false)
end