是否存在rails的约定或创建/操作仅包含一行的表的正确方法? 如果没有,最好的方法是什么? 我需要一种方法来存储系统的配置。
感谢。
答案 0 :(得分:0)
<强>编辑:强>
rake db:seed
命令,基本上执行您在应用程序的 db/seeds.rb
文件中编写的任何代码。虽然可以在此文件中编写任何代码,但按照惯例,您应编写使用基本数据填充数据库的代码
例如:当您在某处部署应用程序并为其创建新数据库时,您希望具有管理员凭据的用户必须在那里。因此,您将编写在此文件中创建该用户的代码。下面是示例代码,它将创建一个用户并为他分配管理员角色。
puts "********Seeding Data Start************"
admin = User.create(:first_name => 'System', :last_name => 'Admin',
:email => 'systemadmin@sunpower.com', :password => 'sunpoweradmin',
:password_confirmation => 'sunpoweradmin', :source_system_id => 'systemadmin',
:source_system => 'LP',:entity_type => "Customer", :target_system => "OPENAM")
if admin.errors.blank?
puts "***User #{admin.first_name} #{admin.last_name} created ***"
admin.add_role :admin # add_role is method defined by rolify gem
puts "***admin role assigned to #{admin.first_name} #{admin.last_name}***"
else
puts "admin user failed to create due to below reasons:"
admin.errors.each do |x, y|
puts"#{x} #{y}" # x will be the field name and y will be the error on it
end
end
puts "********Seeding Data End************"
现在,无论何时重新创建数据库,只需运行以下命令即可使用基本数据填充数据库
<强> $ rake db:seed RAILS_ENV=production
强>
在生产中设置数据库的正确顺序,db命名空间中可用的所有rake任务如下所示
$rake db:create RAILS_ENV=production
$rake db:migrate RAILS_ENV=production
$ rake db:seed RAILS_ENV=production
注意:您可以将前两个命令替换为$rake db:setup RAILS_ENV=production
,它将同时在内部创建和迁移
您可以使用rails-settings-cached gem这是rails-settings gem的分支
设置完成后,您就可以执行以下操作:
Setting.foo = 123
Setting.foo # returns 123
希望这可以帮助您或您正在寻找什么..