class Filemaker::Model::Relations::BelongsTo

Public Class Methods

new(owner, name, options) click to toggle source
Calls superclass method
# File lib/filemaker/model/relations/belongs_to.rb, line 7
def initialize(owner, name, options)
  super(owner, name, options)
  build_target
end

Public Instance Methods

final_reference_key() click to toggle source

Order: source_key first, reference_key next, then identity all must be findable using `find_field_by_name`

# File lib/filemaker/model/relations/belongs_to.rb, line 26
def final_reference_key
  target_class.find_field_by_name(source_key).try(:name) ||
    target_class.find_field_by_name(reference_key).try(:name) ||
    target_class.identity.try(:name)
end
reference_key() click to toggle source
# File lib/filemaker/model/relations/belongs_to.rb, line 12
def reference_key
  options.fetch(:reference_key) { "#{@name}_id" }
end
reference_value() click to toggle source
# File lib/filemaker/model/relations/belongs_to.rb, line 20
def reference_value
  owner.public_send(reference_key.to_sym)
end
source_key() click to toggle source
# File lib/filemaker/model/relations/belongs_to.rb, line 16
def source_key
  options.fetch(:source_key) { nil }
end

Protected Instance Methods

build_target() click to toggle source

Single `=` match whole word or (match empty) Double `==` match entire field If the field value contains underscore or space like 'FM_notified' or 'FM notified', a single `=` may not match correctly.

# File lib/filemaker/model/relations/belongs_to.rb, line 38
def build_target
  @target = if reference_value.blank? || final_reference_key.blank?
              nil
            else
              target_class.where(
                final_reference_key => "==#{reference_value}"
              ).first
            end
end