Class: FReCon::Model
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.controller ⇒ Object
40
41
42
|
# File 'lib/frecon/model.rb', line 40
def self.controller
(self.name.pluralize + "Controller").constantize
end
|
.descendants ⇒ Object
35
36
37
38
|
# File 'lib/frecon/model.rb', line 35
def self.descendants
ObjectSpace.each_object(Class).select { |possibleChild| possibleChild < self }
end
|
.inherited(child) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/frecon/model.rb', line 15
def self.inherited(child)
child.class_eval do
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Attributes::Dynamic
validate :no_invalid_relations
self.class_variable_set(:@@attributes, [])
def self.register_routable_relation(method, attribute)
self.class_variable_get(:@@attributes) << {method: method, type: :relation, attribute: attribute}
end
def self.register_routable_attribute(method, attribute)
self.class_variable_get(:@@attributes) << {method: method, type: :attribute, attribute: attribute}
end
end
end
|
Instance Method Details
#no_invalid_relations ⇒ Object
44
45
46
47
48
49
50
51
|
# File 'lib/frecon/model.rb', line 44
def no_invalid_relations
attributes.keys.select { |attribute| attribute.end_with?("_id") && attribute != "_id" }.each do |relation|
model = "FReCon::".concat(relation.gsub(/_id\Z/, "").capitalize).constantize
errors.add(relation.to_sym, "is invalid") if relation_invalid(model, send(relation))
end
end
|
#relation_invalid(class_constant, id) ⇒ Object
53
54
55
|
# File 'lib/frecon/model.rb', line 53
def relation_invalid(class_constant, id)
class_constant.find_by(id: id).nil?
end
|