是否有任何 Rails 约定或正确的方法来创建/操作仅包含一行的表?
如果没有,最好的方法是什么?
我需要一种方法来存储系统的配置。
谢谢。
最佳答案
已编辑: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
替换前两个命令,它将在内部运行 create 和 migrate或者
您可以使用 rails-settings-cached gem这是 rails-settings gem 的一个分支
设置完成后,您将能够执行以下操作:
Setting.foo = 123
Setting.foo # returns 123
希望这可以帮助您或您正在寻找的东西..
关于ruby-on-rails - 只有一行的表的 Rails 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645399/