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, coerce = true) ⇒ Object
Filter out any fields that do not match model’s fields.
Instance Method Details
#database(db) ⇒ Object
83 84 85 86 87 |
# File 'lib/filemaker/model.rb', line 83 def database(db) self.db = db self.registry_name ||= 'default' unless lay.blank? register end |
#default_per_page ⇒ Object
110 111 112 |
# File 'lib/filemaker/model.rb', line 110 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.
118 119 120 |
# File 'lib/filemaker/model.rb', line 118 def fm_fields api.view.fields.values.map { |field| [field.name, field.data_type] } end |
#layout(lay) ⇒ Object
89 90 91 92 93 |
# File 'lib/filemaker/model.rb', line 89 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.
106 107 108 |
# File 'lib/filemaker/model.rb', line 106 def paginates_per(value) self.per_page = value.to_i end |
#register ⇒ Object
100 101 102 103 |
# File 'lib/filemaker/model.rb', line 100 def register self.server = Filemaker.registry[registry_name] self.api = server.db[db][lay] if server && db && lay end |
#registry(name) ⇒ Object
95 96 97 98 |
# File 'lib/filemaker/model.rb', line 95 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.
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/filemaker/model.rb', line 128 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 |