我有一个库,它有这样的#execute
方法
def execute(query, **args)
# ...
end
我有一个生成数据的类args
(根据用户能力有很多逻辑)
class Abilities
def to_h
{ user: user } # and a lot more data
end
end
现在,当我使用时,#execute
我总是必须记住使用#to_h
,这很烦人,当有人忘记它时会导致错误:
execute(query, abilities.to_h)
所以我想知道我的Abilities
班级是否可以以某种方式响应**
(double splat) 运算符,以便我可以简单地传递对象:
execute(query, abilities)
当我尝试这样调用它时,它会引发错误:
ArgumentError: wrong number of arguments (given 2, expected 1)
那么,有没有办法让我的Abilities
班级表现得像一个Hash
?我可以像这样推导出它,Abilities < Hash
但是我上面有所有的哈希逻辑,这看起来很脏。