0

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

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

4

2 回答 2

1

您可以让 seed.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
于 2012-08-09T15:10:11.600 回答
0

或者

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

这将触发查询以检查记录并且它不存在它将创建一个。使用时做同样的工作,除非但如前所述,我们将通过“Rails Way”。

于 2012-08-09T15:17:32.223 回答