动态更新特定 rails 属性
Dynanmically update specific rails attributes
我有一个常量哈希 P_FACT_MAP
和前一个哈希的键数组 product_params[:product_factors]
。在 P_FACT_MAP
中,所有值都映射到另一个值或值数组,这些值是 ProductFactor
table.
的属性名称
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>)
是否无法动态更新属性的值,或者我是否必须采用完全不同的方法来实现?
我认为这行应该是
ProductFactor::P_FACT_MAP.collect.do |k, v|
替换为
ProductFactor::P_FACT_MAP.each do |k, v|
'v'
不是您 ProductFactor
class 的方法。如果您尝试使用 |k, v|
中的变量 v
,则将 ProductFactor.v
替换为 ProductFactor.send(v)
我有一个常量哈希 P_FACT_MAP
和前一个哈希的键数组 product_params[:product_factors]
。在 P_FACT_MAP
中,所有值都映射到另一个值或值数组,这些值是 ProductFactor
table.
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>)
是否无法动态更新属性的值,或者我是否必须采用完全不同的方法来实现?
我认为这行应该是
ProductFactor::P_FACT_MAP.collect.do |k, v|
替换为
ProductFactor::P_FACT_MAP.each do |k, v|
'v'
不是您 ProductFactor
class 的方法。如果您尝试使用 |k, v|
中的变量 v
,则将 ProductFactor.v
替换为 ProductFactor.send(v)