将模型属性值分配给实例方法参数

时间:2017-03-15 18:22:06

标签: ruby ruby-on-rails-4

我有以下模型

class myclass
  def mymethod(a, b, c, d = 'e')
    StoredProcedure::Test.exec!(
        a, b ,c ,d)
  end
end

我在模型中有属性f值,但我不知道如何将其分配给参数b。 我尝试了def baz(a, b = f, c, d = 'e')但没有工作。 如何将f的值分配给模型中的参数b?

1 个答案:

答案 0 :(得分:0)

我认为你最好的选择是将b设置为nil,然后在用户未指定参数的情况下将其分配给方法:

class myclass
  def mymethod(a, c, b = nil, d = 'e')
    b ||= f
    StoredProcedure::Test.exec!(a, b, c, d)
  end
end

另请注意,我重新订购了参数。可选参数必须在必需参数之后。

当然,如果你希望b一直是f并且不希望用户覆盖它,你应该完全摆脱它:

class myclass
  def mymethod(a, c, d = 'e')
    StoredProcedure::Test.exec!(a, f, c, d)
  end
end