Module: Filemaker::Model::ClassMethods
- Defined in:
- lib/filemaker/model.rb
Instance Method Summary collapse
- #database(db) ⇒ Object
-
#fm_fields ⇒ Array
Make use of -view to return an array of [name, data_type] for this model from FileMaker.
- #layout(lay) ⇒ Object
-
#paginates_per(value) ⇒ Object
A chance for the model to set it’s per_page.
- #register ⇒ Object
- #registry(name) ⇒ Object
-
#with_model_fields(criterion, coerce = true) ⇒ Object
Filter out any fields that do not match model’s fields.
Instance Method Details
#database(db) ⇒ Object
72 73 74 75 76 |
# File 'lib/filemaker/model.rb', line 72 def database(db) self.db = db self.registry_name ||= 'default' unless lay.blank? register end |
#fm_fields ⇒ Array
Make use of -view to return an array of [name, data_type] for this model from FileMaker.
103 104 105 |
# File 'lib/filemaker/model.rb', line 103 def fm_fields api.view.fields.values.map { |field| [field.name, field.data_type] } end |
#layout(lay) ⇒ Object
78 79 80 81 82 |
# File 'lib/filemaker/model.rb', line 78 def layout(lay) self.lay = lay self.registry_name ||= 'default' unless db.blank? register end |
#paginates_per(value) ⇒ Object
A chance for the model to set it’s per_page.
95 96 97 |
# File 'lib/filemaker/model.rb', line 95 def paginates_per(value) self.per_page = value.to_i end |
#register ⇒ Object
89 90 91 92 |
# File 'lib/filemaker/model.rb', line 89 def register self.server = Filemaker.registry[registry_name] self.api = server.db[db][lay] if server && db && lay end |
#registry(name) ⇒ Object
84 85 86 87 |
# File 'lib/filemaker/model.rb', line 84 def registry(name) self.registry_name = (name || 'default').to_s register end |
#with_model_fields(criterion, coerce = true) ⇒ Object
Filter out any fields that do not match model’s fields.
A testing story to tell: when working on in query, we have value that is an array. Without the test and expectation setup, debugging the output will take far longer to realise. This reinforce the belief that TDD is in fact a valuable thing to do.
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/filemaker/model.rb', line 113 def with_model_fields(criterion, coerce = true) accepted_fields = {} criterion.each_pair do |key, value| field = find_field_by_name(key) # Do not process nil value, but empty string is ok in order to reset # some fields. next unless field && value # We do not serialize at this point, as we are still in Ruby-land. # Filemaker::Server will help us serialize into FileMaker format. if value.is_a? Array temp = [] value.each do |v| temp << (coerce ? field.coerce(v) : v) end accepted_fields[field.fm_name] = temp else accepted_fields[field.fm_name] = \ coerce ? field.coerce(value) : value end end accepted_fields end |