Class: Species

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
Earth::Model
Defined in:
lib/earth/pet/species.rb

Constant Summary collapse

TABLE_STRUCTURE =
"\nCREATE TABLE species\n  (\n     name                               CHARACTER VARYING(255) NOT NULL PRIMARY KEY,\n     population                         INTEGER,\n     diet_emission_intensity            FLOAT,\n     diet_emission_intensity_units      CHARACTER VARYING(255),\n     weight                             FLOAT,\n     weight_units                       CHARACTER VARYING(255),\n     marginal_dietary_requirement       FLOAT,\n     marginal_dietary_requirement_units CHARACTER VARYING(255),\n     fixed_dietary_requirement          FLOAT,\n     fixed_dietary_requirement_units    CHARACTER VARYING(255),\n     minimum_weight                     FLOAT,\n     minimum_weight_units               CHARACTER VARYING(255),\n     maximum_weight                     FLOAT,\n     maximum_weight_units               CHARACTER VARYING(255)\n  );\n\n"

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Earth::Model

extend_mining, extended, registry

Class Method Details

.[](name) ⇒ Object



43
44
45
# File 'lib/earth/pet/species.rb', line 43

def [](name)
  find_by_name name.to_s
end

.marginal_dietary_requirement_fallbackObject



47
48
49
50
51
52
53
54
# File 'lib/earth/pet/species.rb', line 47

def marginal_dietary_requirement_fallback
  total_diet_size = thoroughly_researched.map(&:weighted_diet_size).sum.to_f
  total_population = thoroughly_researched.sum(:population)
  return 0.0 unless total_population > 0.0
  average_weight = thoroughly_researched.weighted_average(:weight, :weighted_by => :population)
  return 0.0 unless average_weight > 0.0
  (total_diet_size / total_population) / average_weight
end

Instance Method Details

#cat?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/earth/pet/species.rb', line 71

def cat?
  eql? self.class[:cat]
end

#diet_sizeObject



57
58
59
60
# File 'lib/earth/pet/species.rb', line 57

def diet_size
  return unless weight and marginal_dietary_requirement and fixed_dietary_requirement
  weight.to_f * marginal_dietary_requirement + fixed_dietary_requirement
end

#to_sObject



67
68
69
# File 'lib/earth/pet/species.rb', line 67

def to_s
  name
end

#weighted_diet_sizeObject



62
63
64
65
# File 'lib/earth/pet/species.rb', line 62

def weighted_diet_size
  return unless _diet_size = diet_size and _population = population
  _diet_size.to_f * _population
end