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
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