好的做法是在Rails中为db添加持久数据吗?

时间:2012-08-09 15:00:37

标签: ruby-on-rails database

我是rails的新手,我正在尝试开发和部署我的第一个ruby应用程序。在此过程中,我在数据库中创建了某些表,而没有关联的模型。 例如,用户角色表。尽管使用模型并通过Web界面添加数据可能更好,但它不是问题的主题,表格可能与城市列表或其他一些数据有关。   最初的人口很清楚,这项工作是用“rake db:seed”完成的。   但是,如果我需要向此表添加更多数据呢?什么是最佳做法? 当然,种子文件应该填充新数据。但是我已经将此表与生产中的数据进行了对比。如何在那里添加这些新数据? 我想到的唯一答案是使用纯SQL。但它似乎不是一种“铁路方式”。 谢谢。

更新。 作为自然延续,不仅需要创建新数据,还需要更新和删除已存在的数据。

2 个答案:

答案 0 :(得分:1)

您可以制作seeds.rb仅在不存在时插入新记录。例如

cities = [
  { :name => 'New York'},
  { :name => 'Paris' },
  { :name => 'Tokyo' },
  { :name => 'Saigon' }]
cities.each do |city|
  City.create(city) unless City.exists?(:name => city[:name])
end

答案 1 :(得分:0)

cities.each do |city|
  City.find_or_create_by_name(city[:name])
end

这将触发查询以检查记录,它不存在,它将创建一个。使用时是否同样有效,除非我们按照“Rails Way”的说法进行操作。