ruby-on-rails - 如何在 Rails 中的表中设置默认数据?

标签 ruby-on-rails seed

我有一个表,我将在其中存储测量单位和相应的类别。例如,“杯子,体积”和“盎司,质量”。我只有大约 12 个我关心的测量值,我希望它们在数据库中而不需要手动输入它们,因为无论何时我想部署它或将代码移动到某个地方,我都希望重新创建它。

因此,我认为最好的方法是用它们创建一个 csv 文件,然后使用 rake db:seed。但是我以前从来没有这样做过,所以有人可以指导我如何创建这个 csv,以及如何编写 seeds.rb 文件来生成它吗?这是正确的做法吗?


解决方案:

#db/seeds.rb
require 'open-uri'

#Supply all the units of measurement to be used
Unit.delete_all
open("db/seeds/measurements.csv") do |measurements|
  measurements.read.each_line do |measurement|
    unit, uof = measurement.chomp.split(",")
    Unit.create!(:name => unit, :unit_of => uof)
  end
end

最佳答案

只需编写用于手动生成它们的代码并将其放入 seeds.rb 中。您可以在该文件中使用普通的 ruby​​;所以要么只写普通的 create 要么加载你存储的 csv,例如db/seeds/measurements.csv。要获取该文件的路径,请使用 Rails.root.join("db/seeds/measurements.csv")

例子:

File.open(Rails.root.join("db/seeds/measurements.csv")) do |f|
  # use f here
end

关于ruby-on-rails - 如何在 Rails 中的表中设置默认数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15694774/

相关文章:

mysql 为 rand 设置种子

ruby-on-rails - 在Ruby on Rails中使用Devise为用户播种

php - 如何从 PHP 中的随机数生成器获取种子值

ruby-on-rails-3 - 在 Rails 中测试 seeds.rb

random - 具有随机访问功能的种子 3D 白噪声随机生成器

ruby-on-rails - Heroku ACM 不工作

ruby-on-rails - Rails 操作前检查是否为管理员

ruby-on-rails - Spree - 避免大量的产品选择

ruby-on-rails - Rails 中的并行化方法

ruby-on-rails - Redis ReadOnly 你不能写针对只读的奴隶