将数据插入到Rails中

时间:2011-01-25 14:08:37

标签: ruby-on-rails ruby-on-rails-3 csv

我是rails的新手,并且无法弄清楚如何将数据插入数据库。

我正在读取CSV并希望将这些值加载到数据库中。我的模型看起来像这样。

class Book < ActiveRecord::Base
  belongs_to :subject
end

class Subject < ActiveRecord::Base
  has_many :books
end

...我的数据是这样的:

Science, Book A
Science, Book B
History, Book C
Math, Book D

我正在用分隔符拆分CSV行。

如何插入数据的方式如果主题存在,子书记录将被添加到现有主题,但如果主题不存在,也会创建新主题?

这是解决此问题的最佳方式,还是有人建议采用更好的方法。

2 个答案:

答案 0 :(得分:2)

无需重新发明轮子。在csv文件中添加标题行,将其保存为subjects.csv,然后使用内置灯具库加载数据:http://api.rubyonrails.org/classes/Fixtures.html

答案 1 :(得分:0)

感谢@idlefingers:

subject = Subject.find_or_create_by_name("Science")

subject.books.create(:name => "Book A")