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
64 65 66 67 68 |
# File 'lib/filemaker/model.rb', line 64 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.
95 96 97 |
# File 'lib/filemaker/model.rb', line 95 def fm_fields api.view.fields.values.map { |field| [field.name, field.data_type] } end |
#layout(lay) ⇒ Object
70 71 72 73 74 |
# File 'lib/filemaker/model.rb', line 70 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.
87 88 89 |
# File 'lib/filemaker/model.rb', line 87 def paginates_per(value) self.per_page = value.to_i end |
#register ⇒ Object
81 82 83 84 |
# File 'lib/filemaker/model.rb', line 81 def register self.server = Filemaker.registry[registry_name] self.api = server.db[db][lay] if server && db && lay end |
#registry(name) ⇒ Object
76 77 78 79 |
# File 'lib/filemaker/model.rb', line 76 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.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/filemaker/model.rb', line 105 def with_model_fields(criterion, coerce = true) accepted_fields = {} criterion.each_pair do |key, value| field = find_field_by_name(key) next unless field # 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 |