Sha256: 2d299f6052f279b6ab035e9a24d70709930953b392853354172f75df2865b402

Contents?: true

Size: 489 Bytes

Versions: 2

Compression:

Stored size: 489 Bytes

Contents

class EmbeddedHash < Hash
  include ActiveModel::Validations

  def initialize(other = {})
    other.each do |k,v|
      self[k] = v
    end
    self["_id"] ||= BSON::ObjectId.new.to_s
  end

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

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

  def id
      self["_id"]
  end
  alias :_id :id
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongoid_ext-0.6.2 lib/mongoid_ext/types/embedded_hash.rb
mongoid_ext-0.6.1 lib/mongoid_ext/types/embedded_hash.rb