Ruby 带有散列键和符号的语法

Ruby syntax with hash keys and symbols

对于 Rails 表达式 dependent: :destroydependent 是散列键而 destroy 只是一个符号吗?

has_many :orders, dependent: :destroy等同于has_many(:orders, {:dependent => :destroy})

:dependent 是键,:destroy 作为参数传递给 has_many 的散列值。

Ruby 1.9中引入的表示法只是一种快捷方式,您可以使用irb:

查看其含义
h = { dependent: :destroy }
# => { :dependent => :destroy }

它们都是符号。不要忘记散列可以由 任何对象 键入,不一定是符号或字符串。这与大多数语言完全不同,在大多数语言中,密钥将被强制转换为一致的东西。

使用该示例,您可以看到键和值的类型是什么:

h.keys
# => [:dependent]

h.values
# => [:destroy]

这里都是符号。