Sha256: d93edaf2bf133d8070600a9ef79ecd719e672974c2205ff1521e267418b3472e

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

class FactTrend < Trend
  validates :trendable_id, :uniqueness => {:scope =>  [:trendable_type, :fact_value] }
  validates_presence_of :trendable_id, :allow_blank => false

  before_save :update_fact_name

  def to_label
    name.blank? ? fact_value || fact_name : name
  end

  def type_name
    if fact_value.blank?
      name.blank? ? fact_name : name
    else
      fact_name
    end
  end

  def create_values
    self.class.create_values(self.trendable_id)
  end

  def self.create_values(fact_name_id)
    FactValue.select('fact_name_id, value').group(:fact_name_id, :value).where(:fact_name_id => fact_name_id).includes(:fact_name).map do |fact|
      create(:trendable_type => "FactName",
             :trendable_id => fact.fact_name.id,
             :fact_name => fact.fact_name.name,
             :fact_value => fact.value,
             :name => fact.value)
    end
  end

  def destroy_values
    ids = FactTrend.where(:trendable_id => trendable_id, :trendable_type => trendable_type).pluck(:id)
    super(ids)
  end

  def values
    return FactTrend.where(:id => self) if fact_value
    FactTrend.has_value.where(:trendable_type => trendable_type, :trendable_id => trendable_id)
  end

  def self.model_name
    Trend.model_name
  end

  def find_hosts
    Host.joins(:fact_values).where(:fact_values => {:value => fact_value}).find(:all, :order => 'name')
  end

  private

  def update_fact_name
    self.fact_name = FactName.find(trendable_id).name if trendable_id
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_discovery-1.0.0 test/foreman_app/app/models/fact_trend.rb
foreman_discovery-1.0.0.rc4 test/foreman_app/app/models/fact_trend.rb
foreman_discovery-1.0.0.rc3 test/foreman_app/app/models/fact_trend.rb
foreman_discovery-1.0.0.rc2 test/foreman_app/app/models/fact_trend.rb
foreman_discovery-1.0.0.rc1 test/foreman_app/app/models/fact_trend.rb