ruby-on-rails – 不需要的符号来进行哈希键的字符串转换
发布时间:2020-12-16 19:38:22 所属栏目:百科 来源:网络整理
导读:当我在我的控制器中分配 @my_hash = { :my_key = :my_value } 并通过做测试控制器 get 'index'assigns(:my_hash).should == { :my_key = :my_value } 那么我收到以下错误消息: expected: {:my_key=:my_value},got: {"my_key"=:my_value} (using ==) 为什么
当我在我的控制器中分配
@my_hash = { :my_key => :my_value } 并通过做测试控制器 get 'index' assigns(:my_hash).should == { :my_key => :my_value } 那么我收到以下错误消息: expected: {:my_key=>:my_value},got: {"my_key"=>:my_value} (using ==) 为什么这个自动符号到字符串转换发生了?为什么会影响哈希的关键? 解决方法
如果Rails以某种方式得到它,那么它可能最终成为一个HashWithIndifferentAccess,并且在内部使用字符串键.你可能想要验证类是一样的:
assert_equal Hash,assigns(:my_hash).class 参数始终被处理为无关的访问类型的哈希,因此您可以使用字符串或符号进行检索.如果你把这个分配给你的params哈希的get或post调用,或者你可能会被转换. 你可以做的另一件事就是冻结它,看看有没有人尝试修改它,因为它会抛出异常: @my_hash = { :my_key => :my_value }.freeze (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |