parsley/app/models/conversion.rb

36 lines
989 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
2016-01-18 15:10:25 -06:00
attr_accessor :input_quantity, :input_units, :scale, :output_units, :ingredient_id
2016-01-18 12:58:54 -06:00
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
2018-09-11 10:38:07 -05:00
ingredient = ingredient_id.blank? ? nil : Food.find(ingredient_id)
2016-01-18 12:58:54 -06:00
scale = self.scale.blank? ? '1' : self.scale
2016-01-18 15:10:25 -06:00
density = ingredient.nil? ? nil : ingredient.density
2016-01-18 12:58:54 -06:00
@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