Class: Ars::Familiar::Mongoid
- Inherits:
-
Base
- Object
- Base
- Ars::Familiar::Mongoid
show all
- Defined in:
- lib/ars/familiar/mongoid.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Base
#attributes_to_define, #extract_options, #id, #map_classes, #relationships_to_define, #scribe
Constructor Details
#initialize(model) ⇒ Mongoid
Returns a new instance of Mongoid.
11
12
13
14
15
16
|
# File 'lib/ars/familiar/mongoid.rb', line 11
def initialize(model)
@model_name = model
if Object.const_defined? model.to_s, true
@model = model.constantize
end
end
|
Instance Attribute Details
#class_map ⇒ Object
Returns the value of attribute class_map.
5
6
7
|
# File 'lib/ars/familiar/mongoid.rb', line 5
def class_map
@class_map
end
|
#model ⇒ Object
Returns the value of attribute model.
5
6
7
|
# File 'lib/ars/familiar/mongoid.rb', line 5
def model
@model
end
|
#model_name ⇒ Object
Returns the value of attribute model_name.
5
6
7
|
# File 'lib/ars/familiar/mongoid.rb', line 5
def model_name
@model_name
end
|
Instance Method Details
#attributes_to_define! ⇒ Object
40
41
42
|
# File 'lib/ars/familiar/mongoid.rb', line 40
def attributes_to_define!
@attributes_to_define = standard_fields.keys.map(&:to_sym)
end
|
#id! ⇒ Object
36
37
38
|
# File 'lib/ars/familiar/mongoid.rb', line 36
def id!
@id = primary_key? ? primary_key : :id
end
|
#primary_key ⇒ Object
28
29
30
|
# File 'lib/ars/familiar/mongoid.rb', line 28
def primary_key
@primary_key || primary_key!
end
|
#primary_key! ⇒ Object
18
19
20
21
22
23
24
25
26
|
# File 'lib/ars/familiar/mongoid.rb', line 18
def primary_key!
@primary_key =
case
when model.respond_to?(:primary_key)
model.primary_key
when model.respond_to?(:guid), model.public_method_defined?(:guid)
:guid
end
end
|
#primary_key? ⇒ Boolean
32
33
34
|
# File 'lib/ars/familiar/mongoid.rb', line 32
def primary_key?
!!primary_key
end
|
#relation_switch(name) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/ars/familiar/mongoid.rb', line 62
def relation_switch(name)
case name.name
when 'Mongoid::Relations::Embedded::Many', 'Mongoid::Relations::Referenced::Many'
:has_many
when 'Mongoid::Relations::Embedded::One', 'Mongoid::Relations::Referenced::One'
:has_one
when 'Mongoid::Relations::Referenced::ManyToMany'
return :has_many, :belongs_to
else
raise StandardError, "Unknown Relationship: #{name}"
end
end
|
#relationships_to_define!(**opts) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/ars/familiar/mongoid.rb', line 49
def relationships_to_define!(**opts)
filter, class_map = (opts)
@relationships_to_define =
model.relations.values.select(&filter).flat_map { |relation|
name = relation.fetch(:name)
[*relation_switch(relation.fetch(:relation))].
map{|rel| [rel, name, class_name: class_map[name]] }.
compact
}.compact
end
|
#standard_fields ⇒ Object
44
45
46
47
|
# File 'lib/ars/familiar/mongoid.rb', line 44
def standard_fields
model.fields.select{|name, field| field.class.name == 'Mongoid::Fields::Standard'}.
tap{|fields| fields[id] = fields.delete("_id") }
end
|