我認爲這確實是基本問題,但我找不到解決方案。Rails - 模型屬性作爲函數中的變量
我有簡單的幫助方法:
def getProperNutrientValue(meal)
result = 0
if meal.ingredients.empty?
result
else
meal.ingredients.each do |i|
result += (i.quantity * @meal.products.find(i.product_id).calorific)/100
end
result
end
end
其中,「熱」是產品型號的屬性。
class Product < ActiveRecord::Base
has_many :ingredients
has_many :meals, :through => :ingredients
validates :calorific, :numericality => true, :allow_nil => true
validates :water, :numericality => true, :allow_nil => true
我想DRY這個函數,並將屬性設置爲變量。然後我會爲這個屬性使用這個函數。 所以我想實現這樣的事情:
def getProperNutrientValue(meal, attribute)
result = 0
if meal.ingredients.empty?
result
else
meal.ingredients.each do |i|
result += (i.quantity * @meal.products.find(i.product_id).attribute)/100
end
result
end
end
但當然這是行不通的......我該如何解決?
但是我怎樣才能訪問所選屬性?通過點不起作用。也許像這樣:#{attribute},但它不工作。你明白我的問題嗎? – user2948135
使用['instance_variable_get'](http://apidock.com/ruby/Object/instance_variable_get)或['send'](http://apidock.com/ruby/Object/send) – max