Module: Mongoid::CRUD::Extend
- Defined in:
- lib/mongoid-crud.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
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.rb', line 12 def __create__ *args query = Hash[*args.select{|e| e.class <= ::Hash }] classes = args.select{|e| e.class <= ::Class } if self. raise(ArgumentError,"for embeded document, you need :#{@@parent_sym}") if query[@@parent_sym].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(query.delete(@@parent_sym)).__send__(self.mongoid_name).create!(query) when :one return self._get_class_path(*classes).pinch.last._find(query.delete(@@parent_sym)).__send__("create_#{self.mongoid_name}",query) end else return self.create!(query) end end |
#__delete__(*args) ⇒ Object Also known as: _delete
77 78 79 80 81 82 83 84 85 |
# File 'lib/mongoid-crud.rb', line 77 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 |
# File 'lib/mongoid-crud.rb', line 39 def __read__ *args query = Hash[*args.select{|e| e.class <= ::Hash }] classes = args.select{|e| e.class <= ::Class } if self. parent_id = query.delete(@@parent_sym) _id = query.delete('_id') if !_id.nil? return self._find(_id)#.__send__(self.mongoid_name).create(query) elsif !query[@@parent_sym].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 return self.where(query) end end |
#__update__(*args) ⇒ Object Also known as: _update
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/mongoid-crud.rb', line 64 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 |