Class: EmbeddedHash

Inherits:
Hash
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/mongoid_ext/types/embedded_hash.rb

Direct Known Subclasses

MongoidExt::File, MongoidExt::FileList

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(other = {}) ⇒ EmbeddedHash

Returns a new instance of EmbeddedHash.



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 4

def initialize(other = {})
  super()

  if other
    other.each do |k,v|
      self[k] = v
    end
  end

  self.assign_id
end

Class Method Details

.allocateObject



16
17
18
19
20
21
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 16

def self.allocate
  obj = super
  obj.assign_id

  obj
end

.demongoize(v) ⇒ Object



46
47
48
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 46

def self.demongoize(v)
  self.new(v)
end

.field(name, opts = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 23

def self.field(name, opts = {})
  define_method(name) do
    if fetch(name.to_s, nil).nil?
      self[name.to_s] = opts[:default].kind_of?(Proc) ? opts[:default].call : opts[:default]
    else
      self[name.to_s]
    end
  end

  define_method("#{name}=") do |v|
    self[name.to_s] = v
  end
end

.mongoize(v) ⇒ Object



42
43
44
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 42

def self.mongoize(v)
  v
end

Instance Method Details

#assign_idObject

def method_missing(name, *args, &block)

  @table.send(name, *args, &block)
end


54
55
56
57
58
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 54

def assign_id
  if fetch("_id", nil).nil?
    self["_id"] = Moped::BSON::ObjectId.new.to_s
  end
end

#idObject Also known as: _id



37
38
39
# File 'lib/mongoid_ext/types/embedded_hash.rb', line 37

def id
  self["_id"]
end