2017-08-18 46 views
0

我有一個恆定的散列P_FACT_MAP和前一個散列product_params[:product_factors]的鍵陣列。在P_FACT_MAP中,所有值都映射到另一個值或值的數組,這些值是ProductFactor表的屬性名稱。Dynanmically更新具體導軌屬性

P_FACT_MAP = { 
    :x => %w[something] 
    :y => %w[something2, something] 
    :z => %w[something 3, something1] 
    ... 
    ... 
} 

我試圖做更新動態屬性值:

ProductFactor.v << product_params[:p_id] 

完整的方法代碼:

ProductFactor::P_FACT_MAP.collect.do |k, v| 
    puts "Value #{v}" 
    if product_params[:product_factors].include? k 
    v.each do |f| 
     @coach_recommendation_factor.send(f) << @coach.id 
    end 
end 

但它不能識別屬性名稱v和我收到以下錯誤:

NoMethodError (undefined method `v' for #<Class:0x007f95de9b8180>) 

是不是可以動態更新屬性的值,還是必須採取完全不同的方法才能達到這個目的?

回答

1

'v'是不是你ProductFactor類的方法。如果您嘗試使用|k, v|的變量v,則將ProductFactor.v替換爲ProductFactor.send(v)

0

我相信這條線應該是

ProductFactor::P_FACT_MAP.collect.do |k, v| 

替換

ProductFactor::P_FACT_MAP.each do |k, v| 
相關問題