Rails - 使用面向对象的“高级”

时间:2012-11-27 21:05:36

标签: ruby-on-rails-3 oop

我想维护我的代码DRY,然后我想转换这个伪代码:

def aMethod
  a = aModel.find(2)
  b = a.getVariable
  a.setVariable = c
end

就像这样

def aMethod
  anotherMethod(aModel, getVariable)
end

def anotherMethod(model, var)
  a = model.find(2)
  b = a.var
  a.var = c
end

在我的测试中,似乎模型没有问题,但对于getVariable(即访问模型的变量),它不起作用:undefined local variable or method

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果我理解你要做的事情,你可能想要使用send,例如,

def anotherMethod(model, var_sym)
  a = model.find(2)
  b = a.send(var_sym)
  a.send("#{var_sym}=", c)
end

anotherMethod(aModel, :getVariable)

(需要注意的是,我不知道abc是或应该做什么,因为他们是当地人OP。)