Module: Filemaker::Model::ClassMethods
- Defined in:
- lib/filemaker/model.rb
Instance Method Summary collapse
- #database(db) ⇒ Object
- #default_per_page ⇒ 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, use_query: true) ⇒ Object
Filter out any fields that do not match model’s fields.
Instance Method Details
#database(db) ⇒ Object
87 88 89 90 91 |
# File 'lib/filemaker/model.rb', line 87 def database(db) self.db = db self.registry_name ||= 'default' unless lay.blank? register end |
#default_per_page ⇒ Object
114 115 116 |
# File 'lib/filemaker/model.rb', line 114 def default_per_page per_page end |
#fm_fields ⇒ Array
Make use of -view to return an array of [name, data_type] for this model from FileMaker.
122 123 124 |
# File 'lib/filemaker/model.rb', line 122 def fm_fields api.view.fields.values.map { |field| [field.name, field.data_type] } end |
#layout(lay) ⇒ Object
93 94 95 96 97 |
# File 'lib/filemaker/model.rb', line 93 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.
110 111 112 |
# File 'lib/filemaker/model.rb', line 110 def paginates_per(value) self.per_page = value.to_i end |
#register ⇒ Object
104 105 106 107 |
# File 'lib/filemaker/model.rb', line 104 def register self.server = Filemaker.registry[registry_name] self.api = server.db[db][lay] if server && db && lay end |
#registry(name) ⇒ Object
99 100 101 102 |
# File 'lib/filemaker/model.rb', line 99 def registry(name) self.registry_name = (name || 'default').to_s register end |
#with_model_fields(criterion, use_query: 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.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/filemaker/model.rb', line 132 def with_model_fields(criterion, use_query: 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 << if use_query field.serialize_for_query(v) else field.serialize_for_update(v) end end accepted_fields[field.fm_name] = temp else accepted_fields[field.fm_name] = if use_query field.serialize_for_query(value) else field.serialize_for_update(value) end end end accepted_fields end |