出现相同的 Ruby 字符串不相等,为什么?

埃斯特班

我正在导入 CSV 并使用 ActiveRecord 创建行。CSV是:

first_name,middle_name,last_name,degrees,email,induction_year (ie 2017),"induction_type (options: alumni, associate, faculty, honorary, student)"
John,Middle,Doe,"BA, MPH",[email protected],2017,alumni

我的导入方法如下所示:

def import
  CSV.foreach(@file.path, headers: true, header_converters: lambda {|field| field.partition(" ").first }, col_sep: ',') do |row|
    member_params = row.to_hash
    Member.create!(member_params)
  end
end

但它抛出ActiveModel::UnknownAttributeError: unknown attribute 'first_name' for Member.编辑:这不是会员的问题我可以像你期望的那样创建会员Member.create!(first_name: 'test')

打开撬,我得到了这个反馈:

[1] pry(#<InducteesUpload>)> member_params
=> {"first_name"=>"John",
"middle_name"=>"Middle",
"last_name"=>"Doe",
"degrees"=>"BA, MPH",
"email"=>"[email protected]",
"induction_year"=>"2017",
"induction_type"=>"alumni"}
[2] pry(#<InducteesUpload>)> member_params.keys.first == "first_name"
 => false
[3] pry(#<InducteesUpload>)> member_params.keys.first.encoding
=> #<Encoding:UTF-8>

添加更多:

[1] pry(#<InducteesUpload>)> member_params.keys
=> ["first_name",
  "middle_name",
  "last_name",
  "degrees",
  "email",
  "induction_year",
  "induction_type"]

[2] pry(#<InducteesUpload>)> member_params["first_name"] = "test"
=> "test"
[3] pry(#<InducteesUpload>)> member_params
=> {"first_name"=>"John",
 "middle_name"=>"Middle",
 "last_name"=>"Doe",
 "degrees"=>"BA, MPH",
 "email"=>"[email protected]",
 "induction_year"=>"2017",
 "induction_type"=>"alumni",
 "first_name"=>"test"}

您可以从上面的怪异中看到,这不是会员的问题。但如果你真的想要它会发布。

所以问题暴露在这里:

[6] pry(#<InducteesUpload>)> member_params.keys.first.bytes
=> [239, 187, 191, 102, 105, 114, 115, 116, 95, 110, 97, 109, 101]
[7] pry(#<InducteesUpload>)> "first_name".bytes
=> [102, 105, 114, 115, 116, 95, 110, 97, 109, 101]
塞尔吉奥·图伦采夫

我打赌 unicode 魔法。比较member_params.keys.first.bytes"first_name".bytes你很可能会发现不同之处。

Unicode 有很多符号看起来很像,但彼此并不相等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Apps脚本:为什么出现相等的字符串/值不相等

来自分类Dev

为什么Nim中的相同字符串不相等?

来自分类Dev

为什么两个相同的字符串不相等?

来自分类Dev

awk为什么说代表相同IP地址的字符串不相等?

来自分类Dev

为什么相同的字符不相等

来自分类Dev

为什么我的两个元组包含以相同方式创建的字符串,而不相等?

来自分类Dev

为什么在比较 python 中的字符串时,我的代码中出现“!=”不相等的错误?

来自分类Dev

strcmp说看似相同的字符串不相等

来自分类Dev

为什么两个相同的字符串变量不相等?是因为字节数组大小吗?

来自分类Dev

当作为字符串传递时,为什么不相同的数组被视为相等?

来自分类Dev

相同字符串值的两个实例不相等

来自分类Dev

两个相同的字符串在 Python 中可以不相等吗?

来自分类Dev

看起来相同的字符串在 lua 中反映为不相等

来自分类Dev

两个字符串相同,但比较时不相等

来自分类Java

字符串在Android上的Java中似乎并不相等,即使它们打印的字符串相同

来自分类Dev

为什么这些字符串不相等?

来自分类Dev

这些字符串为什么不相等?

来自分类Dev

为什么这些字符串不相等

来自分类Dev

即使字符相同,NSStrings也不相等

来自分类Dev

使用相同的Iterables创建的zip对象不相等。为什么?

来自分类Dev

为什么这两个相同类型的F#类对象不相等?

来自分类Dev

为什么来自 snapshot.before 和 snapshot.after 的相同对象不相等?

来自分类Dev

为什么两个指向相同分配的参考计数器不相等?

来自分类Dev

当键和值相同时,为什么java.util.LinkedHashMap不相等?

来自分类Dev

两个 Set 包含相同的元素但它们不相等。为什么是这样的结果?

来自分类Dev

PHP字符串具有相同的编码(UTF8),并且在浏览器中显示为相同,但不相等

来自分类Dev

相同的数据不相等

来自分类Dev

为什么两个相同的字符串在Ruby中具有相同的object_id?

来自分类Dev

为什么这两个字符串不相等?

Related 相关文章

  1. 1

    Google Apps脚本:为什么出现相等的字符串/值不相等

  2. 2

    为什么Nim中的相同字符串不相等?

  3. 3

    为什么两个相同的字符串不相等?

  4. 4

    awk为什么说代表相同IP地址的字符串不相等?

  5. 5

    为什么相同的字符不相等

  6. 6

    为什么我的两个元组包含以相同方式创建的字符串,而不相等?

  7. 7

    为什么在比较 python 中的字符串时,我的代码中出现“!=”不相等的错误?

  8. 8

    strcmp说看似相同的字符串不相等

  9. 9

    为什么两个相同的字符串变量不相等?是因为字节数组大小吗?

  10. 10

    当作为字符串传递时,为什么不相同的数组被视为相等?

  11. 11

    相同字符串值的两个实例不相等

  12. 12

    两个相同的字符串在 Python 中可以不相等吗?

  13. 13

    看起来相同的字符串在 lua 中反映为不相等

  14. 14

    两个字符串相同,但比较时不相等

  15. 15

    字符串在Android上的Java中似乎并不相等,即使它们打印的字符串相同

  16. 16

    为什么这些字符串不相等?

  17. 17

    这些字符串为什么不相等?

  18. 18

    为什么这些字符串不相等

  19. 19

    即使字符相同,NSStrings也不相等

  20. 20

    使用相同的Iterables创建的zip对象不相等。为什么?

  21. 21

    为什么这两个相同类型的F#类对象不相等?

  22. 22

    为什么来自 snapshot.before 和 snapshot.after 的相同对象不相等?

  23. 23

    为什么两个指向相同分配的参考计数器不相等?

  24. 24

    当键和值相同时,为什么java.util.LinkedHashMap不相等?

  25. 25

    两个 Set 包含相同的元素但它们不相等。为什么是这样的结果?

  26. 26

    PHP字符串具有相同的编码(UTF8),并且在浏览器中显示为相同,但不相等

  27. 27

    相同的数据不相等

  28. 28

    为什么两个相同的字符串在Ruby中具有相同的object_id?

  29. 29

    为什么这两个字符串不相等?

热门标签

归档