在部署期间(到共享主机),我想检查某些数据是否存储在数据库中,如果不是,我想在部署过程中插入它。谁知道怎么做我描述的?
答案 0 :(得分:2)
查看rake db:seed
甚至还有一个railscast:http://railscasts.com/episodes/179-seed-data
答案 1 :(得分:0)
我个人喜欢使用灯具来填充我的数据库,无论是否正在测试。创建它们之后,您可以创建一个rake任务来重置数据库并填充它。我有这个reset_db.rake任务:
namespace :db do
desc "Drop, create, migrate, seed the database and prepare the test database for rspec"
task :reset_db => :environment do
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
Rake::Task['db:fixtures:load'].invoke
Rake::Task['db:test:prepare'].invoke
end
end
在我的/ lib / tasks文件夹中。我用“rake db:reset_db”执行它。
答案 2 :(得分:0)
我不知道你的主机对其他数据库有多大的灵活性(不知道你是否可以为这些值创建另一个数据库),但是你可以将这些数据放在xml文档中然后有一个脚本插入这些值(如果它们不存在)。
答案 3 :(得分:0)
--- DB SEED APPROACH ---
db目录(app_root / db / seeds.rb)中有一个名为seed.rb的文件,您可以在其中添加种子数据。文件中提供了注释说明(复制如下)。
# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
# Mayor.create(name: 'Emanuel', city: cities.first)
您可以填写要添加的记录,例如:
Users.create(
:email=>"dummy", :pwd_hash=>"3x35zbb2...",
:pwd_salt=>'423x', :admin=>true
)
...然后运行rake db:seed将记录添加到表中。
--- 编辑迁移方法 ---
最简单的选项(虽然db:seed可能更好)是使用种子数据运行迁移。只是不得不这样做。需要具有管理员权限的种子用户,因为站点没有注册选项。下面的迁移文件:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :password
t.string :name
t.boolean :admin
t.integer :company_id
t.timestamps
end
#create the seed user with admin priviledges
User.create!(:email=>"dummy@dummy.com", :password=>"test", :name=>"Dummy", :admin=>true, :company_id=>0)
end
end