module Filemaker::Model::Persistable

Public Instance Methods

create() { |options| ... } click to toggle source
# File lib/filemaker/model/persistable.rb, line 24
def create
  return false unless valid?

  run_callbacks :create do
    options = {}
    yield options if block_given?
    resultset = api.new(create_attributes, options)
    changes_applied
    replace_new_data(resultset)
  end
  self
end
delete()
Alias for: destroy
destroy() { |options| ... } click to toggle source

Use -delete to remove the record backed by the model. @return [Filemaker::Model] frozen instance

# File lib/filemaker/model/persistable.rb, line 68
def destroy
  return if new_record?

  run_callbacks :destroy do
    options = {}
    yield options if block_given?
    api.delete(record_id, options)
  end
  freeze
end
Also aliased as: delete
reload!() click to toggle source
  public_send("#{key}=", (value || ''))
end

end

# File lib/filemaker/model/persistable.rb, line 93
def reload!
  resultset = api.find(record_id)
  replace_new_data(resultset)
  self
end
save() click to toggle source

Call save! but do not raise error.

# File lib/filemaker/model/persistable.rb, line 11
def save
  save!
rescue StandardError => e
  errors.add(:base) << e.message # Does this works?
  false
end
save!() click to toggle source
# File lib/filemaker/model/persistable.rb, line 18
def save!
  run_callbacks :save do
    new_record? ? create : update
  end
end
update() { |options| ... } click to toggle source
# File lib/filemaker/model/persistable.rb, line 37
def update
  return false unless valid?
  return true if dirty_attributes.empty?

  run_callbacks :update do
    # Will raise `RecordModificationIdMismatchError` if does not match
    options = { modid: mod_id } # Always pass in?
    yield options if block_given?
    resultset = api.edit(record_id, dirty_attributes, options)
    changes_applied
    replace_new_data(resultset)
  end
  self
end
update_attributes(attrs = {}) click to toggle source
# File lib/filemaker/model/persistable.rb, line 52
def update_attributes(attrs = {})
  return self if attrs.blank?

  assign_attributes(attrs)
  save
end
update_attributes!(attrs = {}) click to toggle source
# File lib/filemaker/model/persistable.rb, line 59
def update_attributes!(attrs = {})
  return self if attrs.blank?

  assign_attributes(attrs)
  save!
end

Private Instance Methods

replace_new_data(resultset) click to toggle source

If you have calculated field from FileMaker, it will be replaced.

# File lib/filemaker/model/persistable.rb, line 102
def replace_new_data(resultset)
  Filemaker::Model::Builder.build(resultset.first, self)
end