Class: FReCon::Model

Inherits:
Object show all
Defined in:
lib/frecon/model.rb

Direct Known Subclasses

Competition, Match, Participation, Record, Robot, Team

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.controllerObject



29
30
31
# File 'lib/frecon/model.rb', line 29

def self.controller
  (self.name.pluralize + "Controller").constantize
end

.descendantsObject



24
25
26
27
# File 'lib/frecon/model.rb', line 24

def self.descendants
  # Basically lists all of the models in this database.
  ObjectSpace.each_object(Class).select { |possibleChild| possibleChild < self }
end

.inherited(child) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/frecon/model.rb', line 14

def self.inherited(child)
  child.class_eval do
    include Mongoid::Document
    include Mongoid::Timestamps
    include Mongoid::Attributes::Dynamic

    validate :no_invalid_relations
  end
end

Instance Method Details

#no_invalid_relationsObject



33
34
35
36
37
38
39
40
# File 'lib/frecon/model.rb', line 33

def no_invalid_relations
  # Get all of the belongs_to fields (ends with "_id" and not "_id" because that is the id).
  attributes.keys.select { |attribute| attribute.end_with?("_id") && attribute != "_id" }.each do |relation|
    # Get the model for the belongs_to association.
    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



42
43
44
# File 'lib/frecon/model.rb', line 42

def relation_invalid(class_constant, id)
  class_constant.find_by(id: id).nil?
end