我正在尝试基于包含对象名称的字符串访问对象。该对象是有范围的(我使用 cancan 来确保用户只能访问他们被允许访问的记录)。我在下面包含了一些代码,其中包含我必须要去的地方:
operation_type:string, one of %w(add sub mult div)
left_operand_object:string
left_operand:string
right_operand_object:string
right_operand:string
def result
r = [access object using left_operand_object]
k = [access object using right_operand_object]
if operation_type == 'add'
r.instance_variable_get('@'+left_operand) + k.instance_variable_get('@'+left_operand)
elsif operation_type == 'sub'
r.instance_variable_get('@'+left_operand) - k.instance_variable_get('@'+left_operand)
...
end
所以,两个问题:
- 如何完成该
r = [access object using left_operand_object]
行,以允许我根据字符串中的名称访问作用域对象left_operand_object
? instance_variable_get
如果left_operand
是类似的东西会起作用customers.count
还是只有在没有计数方法的情况下才会起作用?
非常感谢任何帮助!