Sha256: 3293848a1aabf49f1d3a707e6ba9dbc949a8cd58729f380e92bdb1dde859e923

Contents?: true

Size: 997 Bytes

Versions: 1

Compression:

Stored size: 997 Bytes

Contents

class Unico::SimilarityControlItem < Unico::Model
  self.abstract_class = true
  self.table_name = :unico_similarity_control_items

  belongs_to :similarity_control

  validates :similarity_control_id, :field_id, :field_description, :code, presence: true

  delegate :scope_column1, :scope_column2, :reference_column, to: :similarity_control, allow_nil: true

  orderize :id

  def scope_value1
    find_relation(scope_column1, read_attribute(:scope_value1)).to_s
  end

  def scope_value2
    find_relation(scope_column2, read_attribute(:scope_value2)).to_s
  end

  def extra_info
    record = find_relation(reference_column, field_id)
    if record.respond_to?(:neighborhoods)
      record.neighborhoods.map(&:to_s).to_sentence
    end
  end

  def show_at_report?
    principal? || agglutinate?
  end

  private

  def find_relation(column, value)
    return value unless column.ends_with?('_id')

    relation = column.gsub('_id', '')

    relation.classify.constantize.find(value)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
unico-training-7.8.0 app/models/unico/similarity_control_item.rb