【发布时间】:2011-11-20 17:41:56
【问题描述】:
我正在努力让 Devise 在我的 Rails 应用程序中工作。我是一个新的 Rails 用户。添加一些默认用户的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby rubygems devise ruby-on-rails-3.1
我正在努力让 Devise 在我的 Rails 应用程序中工作。我是一个新的 Rails 用户。添加一些默认用户的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby rubygems devise ruby-on-rails-3.1
在 Rails 中设置任何默认数据的常规方法是在 db/seeds.rb 中添加数据:
user1 = User.create :name => "User1", :email => "user1@example.com", :password => "user123"
根据您的验证和设计功能,您可能需要输入更多字段。要使用这些数据,您只需调用 rake db:seed。
rake db:migrate
rake db:seed
【讨论】:
rake db:reset 将彻底重置数据库,包括为您重新播种。派上用场。
Faker 是一个不错的选择,如果您不想手动写出所有用户。
这个faker tutorial 展示了如何使用 gem 在一个相对简单的 rake 任务中填充数据库。
【讨论】:
补充:以下方法无效。
User.new
User.name = "Bob"
User.password = "Bob123"
User.password_confirmation = "Bob123"
User.save! ## Exception raised => Password field cannot be blank.
当 Devise 运行其内部方法时,例如“从密码生成加密密码”,在用户调用“新”之后。因此,User.new 引发异常,表示未提供密码。而是使用,要么
User.create({ :name => "Bob", ... }) # or
User.new({ :name => "Bob", ... }).save
【讨论】: