我正在查看ActiveModel :: Validations源代码并找到一条注释,其中包含以下代码片段:
validates_each :first_name, :last_name do |record, attr, value|
record.errors.add attr, 'starts with z.' if value.to_s[0] == ?z
end
我理解片段的演示内容,但引起我注意的是
?z
正在比较字符串的第一个字符。所以我旋转了irb,当然,?z计算为一个字符串,其中“z”为值(而?[返回“[”,??返回“?”,并且?后跟多个字符抛出一个异常)。
我已经公平分享了谷歌搜索,但却无法弄清楚这里发生了什么。
有什么想法吗?