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