我遇到了一些奇怪的问题。我试图允许将CSV导入我的模型。我收到hashtag
错误,但这不是问题。我的模型肯定有job.to_hash
列。
当我收到错误时,如果我尝试{"hashtag"=>"apples", "number"=>"10", "job_type"=>"0"}
,我会job.to_hash.symbolize_keys
,如果我!
(有或没有{:hashtag=>"apples", :number=>"10", :job_type=>"0"}
),我会{{1} }}
然而,这就是问题所在。当我在它们上面调用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
变量复制并粘贴到一个新的变量中它起作用了,但原来并没有尽管如此,尽管显然也是一个哈希值。
答案 0 :(得分:1)
显然List < Job > sortedJobs = new ArrayList < Job > ();
int SJsize = sortedJobs.size();
for (int i = SJsize - 1; i > 0; i--) {
for (int j = 0; j < SJsize; j++) {
if ((sortedJobs.get(i).getStartTime() > sortedJobs.get(j).getStartTime() &&
sortedJobs.get(i).getStartTime() < sortedJobs.get(j).getFinishTime()) ||
(sortedJobs.get(i).getFinishTime() > sortedJobs.get(j).getStartTime() &&
sortedJobs.get(i).getFinishTime() < sortedJobs.get(j).getFinishTime())) {
sortedJobs.remove(i);
}
}
}
对我有两种不同的编码,好像一个存储为US-ASCII,一个(解析)存储在UTF-8中。有趣的是,我只能通过将其粘贴到我的irb中来重现这一点。
要解决此问题,请确保它们具有相同的编码