我有接受关键字参数的方法。
def foo(name:)
p name
end
我的ActiveRecord::Base
子类Person
具有name
属性。
现在我使用foo(name: person.name)
的方法。
但我想调用类似foo(person.slice(:name))
或foo(person.attributes)
的方法,因为还有其他一些关键字参数。
我发现person.slice(:name)
返回{"name": "Someone"}
。键是字符串而不是符号,这会导致错误。
如何创建具有符号键的哈希? 也许更好的方法来实现我想要的目标?
答案 0 :(得分:1)
这就是ActiveRecord存储属性的方式。你想要的是:
person.slice(:name).symbolize_keys
如果您经常这样做,可能需要修补ActiveRecord:
def symbolized_slice(*args)
slice(*args).symbolize_keys
end
我在Ruby 2.1中没有认识到keyword arguments的新表示法。有趣。