Mértékegységek konverziós gem

szavazat
4

én Rails projekt keresem a könyvtár, amely képes átalakítani a tömeg, térfogat és más egységek.

Azt kell átalakítani kilogramm, hogy gramm, literről evőkanál stb

Azt hiszem, meg kell kinéznie:

class Product < ActiveRecord:Base
  acts_as_physical_unit, :volume, :mass, :count
end

class Ingredient < ActiveRecord:Base
  acts_as_physical_unit, :volume, :mass, :count
end

olive_oil = Product.new(:name => Olive Oil, :volume => 1000 ml)

caesar_salad = Recipe.new(:name => Caesar salad,
  :ingredients => [
    Ingredient.new(:product => [olive_oil], :volume => 5 tablespoons)
  ]

# In ingredients of Caesar Salad are 5 tablespoons of Olive Oil specified.
# We should create Caesar Salad for 50 persons.
# How mutch bottles of Olive Oil should be ordered ?
order = OrderItem.new(
  :product => olive_oil,
  :count => olive_oil.count_for(caesar_salad.ingredients.first)) * 50
)

Van egy ilyen gyöngyszem is létezik?

Kösz.

A kérdést 12/06/2011 13:21
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
4

Érdemes kipróbálni ruby-egységek :

Meg tudja nézni az egység listát , hogy ha ez egy Önnek!

Válaszolt 12/06/2011 17:33
a forrás felhasználó

szavazat
1

Megteheted ezt Unitwise . Úgy tervezték, a mértékegység-átváltási és mérési matematika egy tonna tudományos egységek. Ez nem ismeri a sínek, de legyen elég könnyű bekötésének fel:

require 'unitwise/ext'

class Ingredient < ActiveRecord::Base
  # store the value as milliliter in the database
  def volume=(amount)
    super(amount.convert_to('ml').to_f)
  end

  # convert the value to a measurement when retrieved
  def volume
    super().convert_to('ml')
  end
end

# Now you can initialize by sending a number (assumed to be in ml)
cooking_wine = Ingredient.new(name: 'Cooking Wine', volume: 750)

# Or send any other volume measurement
olive_oil = Ingredient.new(name: 'Olive Oil', volume: 1.liter)
cumin = Ingredient.new(name: 'Cumin', volume: 5.teaspoon)

# Now volume returns a measurement
cooking_wine.volume # => #<Unitwise::Measurement 750.0 ml>

# And the volume can be converted to whatever you want.
olive_oil.volume.convert_to('gallon') # => #<Unitwise::Measurement 0.21996924829908776 gallon>

# Use .to_f to get just the numeric value
cumin.volume.convert_to('cup').to_f # => 0.10416666666666666

# You can perform whatever math you need on the volumes as well:
2.0 * (olive_oil.volume + cooking_wine.volume) => #<Unitwise::Measurement 3500.0 ml>
Válaszolt 27/02/2014 14:51
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more