我正在尝试在我的应用程序中获得一个配方缩放方法,它将返回一些适合使用量的更好的测量值。
例如,6人食谱需要1杯面粉。如果你为一个人量身定做,那么1/6一杯面粉就是2.5汤匙,这是一种更好的说法(当你只能用勺子时,为什么要搜索和弄脏量杯?)。
所以我在数据库中有一个重量表,重量以克为单位,相应的测量值和数量。 例如。面粉
amount | measure | grams
----------+-------------+---------
1 | cup | 160
1 | tbsp | 10
1 | pound | 454
在我的应用程序中(最好使用activerecord)我正在尝试为配方中的每种成分获得最佳拟合度量。
@ingredients = Recipe.select('food_names.name,
ABS(ingredients.grams-weights.grams) as nearest_weight,
weights.amount,
weights.measure'
).joins(
{:ingredients=> :food_name},
{:food_names=> :weights}
).where(
"recipes.recipe_id", :recipe_id
).order(
:nearest_weight
).reverse_order
nearest_weight
搜索数据库中最接近的权重匹配,但我需要找到与该行关联的权重和度量,此时,我得到所有返回的行。
我需要做的是以某种方式将nearest_weight
限制为一行,然后获取该行,以便我知道重量和度量是什么,并且我希望我能在一个查询中完成所有操作。