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