Module: Mongoid::CRUD::Extend
- Defined in:
- lib/mongoid-crud/ext.rb
Constant Summary collapse
- @@parent_sym =
:parent_id
Instance Method Summary collapse
- #__create__(*args) ⇒ Object (also: #_create)
- #__delete__(*args) ⇒ Object (also: #_delete)
- #__read__(*args) ⇒ Object (also: #_read)
- #__update__(*args) ⇒ Object (also: #_update)
Instance Method Details
#__create__(*args) ⇒ Object Also known as: _create
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/mongoid-crud/ext.rb', line 11 def __create__ *args query = Hash[*args.select{|e| e.class <= ::Hash }] classes = args.select{|e| e.class <= ::Class } if self. parent_id = query.delete(@@parent_sym) || query.delete(@@parent_sym.to_s) raise(ArgumentError,"for embeded document, you need :#{@@parent_sym}") if parent_id.nil? parent_model= self._get_class_path(*classes).pinch.last case parent_model.relation_connection_type(self).to_s.downcase.split('::').last.to_sym when :many return self._get_class_path(*classes).pinch.last._find(parent_id).__send__(self.mongoid_name).create!(query) when :one return self._get_class_path(*classes).pinch.last._find(parent_id).__send__("create_#{self.mongoid_name}",query) end else return self.create!(query) end end |
#__delete__(*args) ⇒ Object Also known as: _delete
83 84 85 86 87 88 89 90 91 |
# File 'lib/mongoid-crud/ext.rb', line 83 def __delete__ *args query = Hash[*args.select{|e| e.class <= ::Hash }] classes = args.select{|e| e.class <= ::Class } raise(ArgumentError,"to #{__method__} document, you need :_id") if query[:_id].nil? return self._find(query[:_id]).delete end |
#__read__(*args) ⇒ Object Also known as: _read
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/mongoid-crud/ext.rb', line 39 def __read__ *args query = Hash[*args.select{|e| e.class <= ::Hash }] classes = args.select{|e| e.class <= ::Class } _id = query.delete(:_id) || query.delete('_id') if self. parent_id = query.delete(@@parent_sym) || query.delete(@@parent_sym.to_s) if !_id.nil? return self._find(_id)#.__send__(self.mongoid_name).create(query) elsif !parent_id.nil? return self._get_class_path(*classes).pinch.last._find(parent_id).__send__(self.mongoid_name).where(query) else return self._where(query) end else if !_id.nil? return self.find(_id) else return self.where(query) end end end |
#__update__(*args) ⇒ Object Also known as: _update
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/mongoid-crud/ext.rb', line 70 def __update__ *args query = Hash[*args.select{|e| e.class <= ::Hash }] classes = args.select{|e| e.class <= ::Class } raise(ArgumentError,"to #{__method__} document, you need :_id") if query[:_id].nil? var= self._find(query.delete(:_id)) query.each{|k,v| var[k]= v } return var.save! end |