我有接受关键字参数的方法。
def foo(name:)
p name
end
我有一个具有属性的ActiveRecord::Base
子类。Person
name
现在,我正在使用by方法foo(name: person.name)
。
但我想像foo(person.slice(:name))
或那样调用方法foo(person.attributes)
,因为还有其他一些关键字参数。
我发现person.slice(:name)
返回像{"name": "Someone"}
。关键是字符串而不是符号,这会导致错误。
如何创建具有符号键的哈希?也许是实现我想要的更好的方法?
这就是ActiveRecord存储属性的方式。您想要的是:
person.slice(:name).symbolize_keys
如果您经常这样做,则可能需要修补ActiveRecord:
def symbolized_slice(*args)
slice(*args).symbolize_keys
end
我不认识Ruby 2.1中关键字参数的新符号。有趣的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句