Module: CouchbaseOrm::Persistence::ClassMethods
- Defined in:
- lib/couchbase-orm/persistence.rb
Instance Method Summary collapse
- #create(attributes = nil, &block) ⇒ Object
- #create!(attributes = nil, &block) ⇒ Object
-
#design_document(name = nil) ⇒ Object
Allow classes to overwrite the default document name extend ActiveModel::Naming (included by ActiveModel::Model).
-
#fail_validate!(document) ⇒ Object
Raise an error if validation failed.
-
#inherited(child) ⇒ Object
Set a default design document.
- #instantiate(attributes, id, cas, klass) ⇒ Object
Instance Method Details
#create(attributes = nil, &block) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/couchbase-orm/persistence.rb', line 21 def create(attributes = nil, &block) if attributes.is_a?(Array) attributes.collect { |attr| create(attr, &block) } else instance = new(attributes, &block) instance.save instance end end |
#create!(attributes = nil, &block) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/couchbase-orm/persistence.rb', line 31 def create!(attributes = nil, &block) if attributes.is_a?(Array) attributes.collect { |attr| create!(attr, &block) } else instance = new(attributes, &block) instance.save! instance end end |
#design_document(name = nil) ⇒ Object
Allow classes to overwrite the default document name extend ActiveModel::Naming (included by ActiveModel::Model)
48 49 50 51 52 |
# File 'lib/couchbase-orm/persistence.rb', line 48 def design_document(name = nil) return @design_document unless name @design_document = name.to_s end |
#fail_validate!(document) ⇒ Object
Raise an error if validation failed.
42 43 44 |
# File 'lib/couchbase-orm/persistence.rb', line 42 def fail_validate!(document) raise Error::RecordInvalid.new(document) end |
#inherited(child) ⇒ Object
Set a default design document
55 56 57 58 59 60 |
# File 'lib/couchbase-orm/persistence.rb', line 55 def inherited(child) super child.instance_eval do @design_document = child.name.underscore end end |
#instantiate(attributes, id, cas, klass) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/couchbase-orm/persistence.rb', line 62 def instantiate(attributes, id, cas, klass) # attributes = decode_encrypted_attributes(attributes) type = attributes.delete('type') if type && type.to_s != klass.design_document raise CouchbaseOrm::Error::TypeMismatchError.new( "document type mismatch, #{type} != #{klass.design_document}", self ) end # Use ActiveModel::AttributeSet::Builder to build attributes builder = attributes_builder attribute_set = builder.build_from_database(attributes) # Allocate and initialize the object instance = klass.allocate instance.init_with('attributes' => attribute_set, 'id' => id, 'cas' => cas, 'new_record' => false) # Custom initialization method instance end |