У меня странные проблемы.Я пытаюсь разрешить импорт CSV в мою модель.Я получаю ошибку unknown attribute 'hashtag' for Job.
, но это не проблема.Моя модель определенно имеет столбец hashtag
.
Когда я получаю ошибку, если я пытаюсь сделать job.to_hash
, я получаю {"hashtag"=>"apples", "number"=>"10", "job_type"=>"0"}
и если я делаю job.to_hash.symbolize_keys
(с или без !
)Я получаю {: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
, приведенную выше, в новую переменную иэто работает, но оригинал - нет, несмотря на то, что он, очевидно, тоже хэш.