2

#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クラスが (ダブル スプラット) 演算子に何らかの形で応答できるかどうか疑問に思っていました。**

execute(query, abilities)

このように呼び出そうとすると、エラーがスローされます。

ArgumentError: wrong number of arguments (given 2, expected 1)

Abilitiesそれで、私のクラスをのように動作させる方法はありますHashか? このように派生させることもできますAbilities < Hashが、ハッシュ ロジックがすべて含まれているため、かなり汚いように見えます。

4

2 に答える 2