Sha256: f226dc94daa1ff6204c09a37650c338bec986b509005e2bb9b3da329975f3ed8

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

class ConfigurationItem < ActiveRecord::Base
  attr_protected :created_at, :updated_at

  belongs_to :configuration
  belongs_to :configuration_item_type
  has_and_belongs_to_many :configuration_options

  alias :config :configuration
  alias :options :configuration_options
  alias :type :configuration_item_type

  def category
    self.type.category
  end

  def to_js_hash
    {:id => self.id,
      :configruationItemType => self.type.to_js_hash,
      :configurationOptions => options.collect(&:to_js_hash)
    }
  end

  def clear_options
    self.options.each{|option|option.destroy} if self.configuration_item_type.allow_user_defined_options?
    self.options.destroy_all
    self.save
  end

  def set_options(internal_identifiers_or_value)
    if self.configuration_item_type.allow_user_defined_options?
      value = internal_identifiers_or_value.first
      unless value.blank?
        self.options << ConfigurationOption.create(:value => value, :user_defined => true)
      end
    elsif self.configuration_item_type.is_multi_optional?
      internal_identifiers_or_value.each do |value|
        self.options << self.configuration_item_type.find_configuration_option(value) unless value.blank?
      end
    else
      value = internal_identifiers_or_value.first
      self.options << self.configuration_item_type.find_configuration_option(internal_identifiers_or_value) unless value.blank?
    end

    self.save
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
erp_app-3.1.16 app/models/configuration_item.rb
erp_app-3.1.15 app/models/configuration_item.rb
erp_app-3.1.14 app/models/configuration_item.rb
erp_app-3.1.13 app/models/configuration_item.rb