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 130 131 |
# 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) # 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 |