我想要一个与此类似的方法:
def method_with_optional(..., user = current_user, account = current_account)
...
因为,我不想每次都传递current_user和current_account。 但只要未传递用户对象,就不应覆盖用户形式参数。
这样我就可以做到以下
method_with_optional(params[:id])
或
method_with_optional(params[:id], User.new)
答案 0 :(得分:1)
您正在寻找的是命名参数,Ruby 1.8不支持这些参数,但arguments可能会取得一些成功。
答案 1 :(得分:0)
很抱歉,目前没有对命名参数的内置支持,你必须等待Ruby 2.0。
答案 2 :(得分:0)
默认参数的替代方法是在方法体中分配变量,并将用户,帐户参数作为params哈希的一部分提供。您可以检查params是否包含用户和/或帐户,然后执行必要的操作:
user = params[:user] || current_user
account = params[:account] || account
编辑:如果在调用方法之前无法向Params哈希添加内容,那么除了在方法签名中重新排序形式参数之外,我不知道你能做什么:)