Module: Mongoid::Oslc::ClassMethods

Defined in:
lib/mongoid/oslc.rb

Instance Method Summary collapse

Instance Method Details

#describe(describe) ⇒ Object



38
39
40
# File 'lib/mongoid/oslc.rb', line 38

def describe(describe)
  Mongoid::Oslc.resources[self.name].merge!(describe: describe)
end

#domain(name) ⇒ Object



34
35
36
# File 'lib/mongoid/oslc.rb', line 34

def domain(name)
  Mongoid::Oslc.resources[self.name].merge!(domain: name)
end

#oslc_embeds_many(name, options = {}) ⇒ Object



48
49
50
51
52
53
# File 'lib/mongoid/oslc.rb', line 48

def oslc_embeds_many(name, options = {})
  oslc_options = options_for_oslc(options)
  embeds_many(name, options)
  embedded_class = relations[name.to_s].class_name.constantize
  register_oslc_field(name, oslc_options.merge(type: Array, embedded: embedded_class))
end

#oslc_field(name, options = {}) ⇒ Object



42
43
44
45
46
# File 'lib/mongoid/oslc.rb', line 42

def oslc_field(name, options = {})
  oslc_options = options_for_oslc(options)
  field(name, options)
  register_oslc_field(name, oslc_options)
end

#oslc_fieldsObject



55
56
57
58
59
# File 'lib/mongoid/oslc.rb', line 55

def oslc_fields
  (ancestors - included_modules).inject({}) do |hash, ancestor_class|
    hash.merge(Mongoid::Oslc.resources[ancestor_class.name][:fields])
  end
end

#oslc_where(query) ⇒ Object



61
62
63
64
# File 'lib/mongoid/oslc.rb', line 61

def oslc_where(query)
  mongoid_query = Strategy.to_query(query)
  where(mongoid_query)
end

#register_oslc_field(name, options) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/mongoid/oslc.rb', line 66

def register_oslc_field(name, options)
  Mongoid::Oslc.resources[self.name][:fields][options[:mapping]] = {
    name: name,
    value_type: ::Oslc::VALUE_TYPES[options[:value_type] || fields[name.to_s].type.to_s],
    read_only: (options[:read_only] || false),
    occurs: occurs(options),
    allowed_values: (options[:allowed_values] || []),
    embedded: (options[:embedded] || false),
    range: (options[:range] || [])
  }
end