我正在尝试使用CSV中的数据为Rails 4应用程序播放我的数据库。我决定在我的应用程序中创建自己的导入功能。以下是我Film
模型中导入功能的示例。在我的CSV中,导演的名字和姓氏与每行中的电影名称相关联。
CSV.foreach(path, :col_sep => ",", :quote_char => "\x00", :headers => true) do |row|
hash = row.to_hash
hash.values.each do |value|
value.strip! unless value.nil? # remove whitespaces around
end
unless hash["name"].blank?
film = find_or_create_by name: hash["name"]
unless hash["firstname"].blank? && hash["lastname"].blank?
film.director = Director.find_or_create_by firstname: hash["firstname"], lastname: hash["lastname"]
end
end
end
我的电影和导演已创建但彼此无关联(即director_id
表中的films
字段为空。
我认为这一行需要修复:
film.director = Director.find_or_create_by firstname: hash["firstname"], lastname: hash["lastname"]
感谢您的帮助。
答案 0 :(得分:0)
分配film.director
时,更改不会自动保留在数据库中,您需要应用以下两种解决方案之一:
director = Director.find_or_create_by(firstname: hash["firstname"], lastname: hash["lastname"])
# Solution #1:
film.update_attributes(director: director)
# Solution #2:
film.director = director
film.save