module Gorillib::Builder
Public Instance Methods
getset(field, *args, &block)
click to toggle source
# File lib/gorillib/model/elasticsearch_ext.rb, line 4 def getset(field, *args, &block) ArgumentError.check_arity!(args, 0..1) if args.empty? read_attribute(field.name) else self.send("receive_#{field.name}", args.first) end end
getset_collection_item(field, item_key, attrs={}, &block)
click to toggle source
# File lib/gorillib/model/elasticsearch_ext.rb, line 13 def getset_collection_item(field, item_key, attrs={}, &block) plural_name = field.plural_name if attrs.is_a?(field.item_type) # actual object: assign it into collection val = attrs set_collection_item(plural_name, item_key, val) elsif has_collection_item?(plural_name, item_key) # existing item: retrieve it, updating as directed val = get_collection_item(plural_name, item_key) val.receive!(attrs, &block) else # missing item: autovivify item and add to collection params = { key_method => item_key, :owner => self }.merge(attrs) val = self.send("receive_#{field.singular_name}", params, &block) set_collection_item(plural_name, item_key, val) end val end
inscribe_methods(model)
click to toggle source
# File lib/gorillib/model/elasticsearch_ext.rb, line 33 def inscribe_methods model raise "Plural and singular names must differ: #{self.plural_name}" if (singular_name == plural_name) # @visibilities[:writer] = false model.__send__(:define_attribute_reader, self.name, self.type, visibility(:reader)) model.__send__(:define_attribute_tester, self.name, self.type, visibility(:tester)) # model.__send__(:define_collection_receiver, self) model.__send__(:define_collection_getset, self) model.__send__(:define_collection_tester, self) # model.__send__(:define_collection_single_receiver, self) end