抱歉,如果我对Ruby不太了解,这个问题可能不清楚。我有一个父类(我没有实现)Reports,它有一个方法query,定义如下:
class Reports
def self.query(id:, is_active: false, is_timestamp: false, version: DEFAULT_VERSION, limit: DEFAULT_LIMIT)
<<code>>
end
我定义了一个继承Reports的子类Report,并定义了相同的方法query,如下所示:
class Report < Reports
def self.q_version(id)
<<some logic to decide version>>
end
def self.query(id:, is_active: false, is_timestamp: false, limit: DEFAULT_LIMIT)
version = q_version(id)
super(id, is_active, is_timestamp, version, limit)
end
现在,当我运行代码时,我得到了一个参数错误,如下所示:
ArgumentError: wrong number of arguments (given 5, expected 0; required keyword: id)
我怀疑我没有正确地做超级电话,但不知道是哪一部分。
所以任何帮助都将不胜感激。
1条答案
按热度按时间kuhbmx9i1#
该方法的签名表明它需要如下所示的关键字参数:
或者在Ruby 3.1以上版本中使用new shorthand hash syntax: