我遇到了一些奇怪的问题。我正在尝试允许将 CSV 导入我的模型。我收到一个unknown attribute 'hashtag' for Job.
错误,但这不是问题。我的模型肯定有一个hashtag
专栏。
当我收到错误时,如果我尝试这样做,job.to_hash
我会得到{"hashtag"=>"apples", "number"=>"10", "job_type"=>"0"}
,如果我这样做job.to_hash.symbolize_keys
(有或没有 a !
)我得到{:hashtag=>"apples", :number=>"10", :job_type=>"0"}
然而,问题来了。Hash
当我拜访他们时,这两个似乎都属于同类.class
。但是如果我尝试将它分配给一个变量并调用它["hashtag"]
,[:hashtag]
它会返回nil
.
我的意思的例子:
>> foo = job.to_hash.symbolize_keys
=> {:hashtag=>"apples", :number=>"10", :job_type=>"0"}
>> bar = {hashtag: "apples", number: "10", job_type: "0"}
=> {:hashtag=>"apples", :number=>"10", :job_type=>"0"}
>> foo == bar
=> false
>> foo.class
=> Hash
>> foo.class == bar.class
=> true
模型:
class Job < ApplicationRecord
require 'csv'
def self.import(file)
file = CSV.read(file.path, headers:true)
file.each { |job| Job.create(job.to_hash)}
end
end
CSV:
hashtag,number,job_type
apples,10,0
bees,10,0
carrots,10,0
我真的不知道出了什么问题......我实际上是在将foo
上面的变量复制并粘贴到一个新变量中并且它可以工作,但是尽管显然也是一个哈希值,但原始变量却没有。