parsley/app/models/conversion.rb

35 lines
908 B
Ruby
Raw Normal View History

2016-01-18 12:58:54 -06:00
class Conversion
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :input_quantity, :input_units, :scale, :output_units, :density
attr_reader :output_quantity
validates :input_quantity, presence: true
validate :check_conversion, :if => Proc.new { |object| object.errors.empty? }
def initialize(attrs = nil)
if attrs
attrs.each do |k, v|
send("#{k}=", v)
end
end
@output_quantity = nil
end
def check_conversion
begin
scale = self.scale.blank? ? '1' : self.scale
density = self.density.blank? ? nil : self.density
@output_quantity = UnitConversion.convert(input_quantity, scale, input_units, output_units, density)
rescue UnitConversion::UnparseableUnitError => err
errors[:base] << "Invalid Data: #{err.message}"
end
end
def persisted?
false
end
end