Class: Configuration
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Configuration
- Defined in:
- app/models/configuration.rb
Class Method Summary collapse
Instance Method Summary collapse
- #add_configuration_item(configuration_item_type, *option_internal_identifiers) ⇒ Object (also: #add_item)
- #cannot_have_two_templates_per_iid ⇒ Object
- #clear_configuration_item_types ⇒ Object
-
#clone(set_defaults = true, description = nil, internal_identifier = nil) ⇒ Object
Clone.
-
#copy(description = nil, internal_identifier = nil) ⇒ Object
Copy.
- #get_configuration_item(configuration_item_type) ⇒ Object (also: #get_item)
- #is_template? ⇒ Boolean
- #update_configuration_item(configuration_item_type, *option_internal_identifiers) ⇒ Object (also: #update_item)
Class Method Details
.find_template(iid) ⇒ Object
168 169 170 |
# File 'app/models/configuration.rb', line 168 def find_template(iid) self.templates.where('internal_identifier = ?', iid).first end |
Instance Method Details
#add_configuration_item(configuration_item_type, *option_internal_identifiers) ⇒ Object Also known as: add_item
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/models/configuration.rb', line 51 def add_configuration_item(configuration_item_type, *option_internal_identifiers) option_internal_identifiers = option_internal_identifiers.collect { |item| item.to_s } configuration_item_type = (configuration_item_type.is_a? ConfigurationItemType) ? configuration_item_type : ConfigurationItemType.find_by_internal_identifier(configuration_item_type.to_s) item = get_configuration_item(configuration_item_type) if item update_configuration_item(configuration_item_type, option_internal_identifiers) else unless self.configuration_item_types.where("id = ?", configuration_item_type.id).first.nil? item = ConfigurationItem.create(:configuration_item_type => configuration_item_type) item.(option_internal_identifiers) self.configuration_items << item self.save else raise "Configuration Item Type #{configuration_item_type.description} is not valid for this configuration" end end end |
#cannot_have_two_templates_per_iid ⇒ Object
12 13 14 15 16 17 18 |
# File 'app/models/configuration.rb', line 12 def cannot_have_two_templates_per_iid if self.is_template unless Configuration.where('id != ?', self.id).where(:is_template => true).where(:internal_identifier => self.internal_identifier).first.nil? errors.add(:is_template, "Cannot have more than one template per configuration") end end end |
#clear_configuration_item_types ⇒ Object
40 41 42 |
# File 'app/models/configuration.rb', line 40 def clear_configuration_item_types configuration_item_types.clear end |
#clone(set_defaults = true, description = nil, internal_identifier = nil) ⇒ Object
Clone
Will copy all configuration item types
-
Args
-
set_defaults
-> create items and set default options default = true -
description
-> description to set = nil -
internal_identifier
-> internal_identifier to set = nil
-
-
Returns :
-
the cloned configuration
-
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'app/models/configuration.rb', line 102 def clone(set_defaults=true, description=nil, internal_identifier=nil) configuration_dup = self.dup configuration_dup.internal_identifier = internal_identifier || self.internal_identifier configuration_dup.description = description || self.description configuration_dup.is_template = false self.configuration_item_types.each do |configuration_item_type| configuration_dup.configuration_item_types << configuration_item_type end configuration_dup.save configuration_dup.configuration_item_types.each do |configuration_item_type| configuration_item = ConfigurationItem.create(:configuration_item_type => configuration_item_type) configuration_item. = configuration_item_type..default if set_defaults configuration_item.save configuration_dup.configuration_items << configuration_item end configuration_dup.save configuration_dup end |
#copy(description = nil, internal_identifier = nil) ⇒ Object
Copy
Will copy all configuration item types and items
-
Args
-
description
-> description to set = nil -
internal_identifier
-> internal_identifier to set = nil
-
-
Returns :
-
the copied configuration
-
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'app/models/configuration.rb', line 133 def copy(description=nil, internal_identifier=nil) configuration_dup = self.dup configuration_dup.internal_identifier = internal_identifier || self.internal_identifier configuration_dup.description = description || self.description configuration_dup.is_template = false self.configuration_item_types.each do |configuration_item_type| configuration_dup.configuration_item_types << configuration_item_type end configuration_dup.save #clone items self.configuration_items.each do |item| item_dup = item.dup # remove old configuration id item_dup.configuration_id = nil item_dup.configuration_item_type = item.configuration_item_type item..each do |option| if option.user_defined item_dup. << option.dup else item_dup. << option end end configuration_dup.configuration_items << item_dup end configuration_dup.save configuration_dup end |
#get_configuration_item(configuration_item_type) ⇒ Object Also known as: get_item
84 85 86 87 88 |
# File 'app/models/configuration.rb', line 84 def get_configuration_item(configuration_item_type) configuration_item_type = (configuration_item_type.is_a? ConfigurationItemType) ? configuration_item_type : ConfigurationItemType.find_by_internal_identifier(configuration_item_type.to_s) self.items.where('configuration_item_type_id = ?', configuration_item_type.id).first end |
#is_template? ⇒ Boolean
47 48 49 |
# File 'app/models/configuration.rb', line 47 def is_template? self.is_template end |
#update_configuration_item(configuration_item_type, *option_internal_identifiers) ⇒ Object Also known as: update_item
72 73 74 75 76 77 78 79 80 |
# File 'app/models/configuration.rb', line 72 def update_configuration_item(configuration_item_type, *option_internal_identifiers) configuration_item_type = (configuration_item_type.is_a? ConfigurationItemType) ? configuration_item_type : ConfigurationItemType.find_by_internal_identifier(configuration_item_type.to_s) item = self.items.where('configuration_item_type_id = ?', configuration_item_type.id).first raise "Configuration item #{configuration_item_type.description} does not exist for configuration #{self.description}" if item.nil? item. item.(option_internal_identifiers.flatten) end |