at.*_*at. 26 ruby-on-rails seed devise ruby-on-rails-3 ruby-on-rails-3.2
在我的开发和测试环境中,我想用一堆用户为数据库播种.我正在使用Ruby on Rails v3.2.8和最新的Devise.所以我在db/seeds.rb文件中添加了这一行:
User.create(email: 'test@example.com', encrypted_password: '#$taawktljasktlw4aaglj')
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时rake db:setup,我收到以下错误:
耙子流产了!无法批量分配受保护的属性:encrypted_password
种子用户的正确方法是什么?
Aru*_*nan 40
你必须这样做:
user = User.new
user.email = 'test@example.com'
user.encrypted_password = '#$taawktljasktlw4aaglj'
user.save!
Run Code Online (Sandbox Code Playgroud)
阅读本指南以了解批量分配的内容:http://guides.rubyonrails.org/security.html
我想知道为什么必须直接设置加密密码.你可以这样做:
user.password = 'valid_password'
user.password_confirmation = 'valid_password'
Run Code Online (Sandbox Code Playgroud)
小智 26
阿伦是对的.在seed.rb中执行此操作更容易
user = User.create! :name => 'John Doe', :email => 'john@gmail.com', :password => 'topsecret', :password_confirmation => 'topsecret'
Run Code Online (Sandbox Code Playgroud)
Muh*_*lid 14
跳过确认方法仅在您的用户模型中具有适合的模块时才有效,否则将其删除
user = User.new(
:email => "admin@xxxxx.xxx",
:password => "123456",
:password_confirmation => "123456"
)
user.skip_confirmation!
user.save!
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,但这是一个管理员用户的例子(来自cancancan):
User.create!([
{email: "testadmin@mvmanor.co.uk", password: "testadminuser", password_confirmation: "testadminuser", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2015-02-06 14:02:10", last_sign_in_at: "2015-02-06 14:02:10", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", admin: true},
{email: "testuser@mvmanor.co.uk", password: "testuseraccount", password_confirmation: "testuseraccount", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2015-02-06 14:03:01", last_sign_in_at: "2015-02-06 14:03:01", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", admin: false},
{email: "testcustomer@customer.co.uk", password: "testcustomeruser", password_confirmation: "testcustomeruser", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2015-02-06 14:03:44", last_sign_in_at: "2015-02-06 14:03:44", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", admin: false}
])
Run Code Online (Sandbox Code Playgroud)
如果您正在使用设计confirmable模块,则需要执行以下操作:
user = User.new(
email: 'user@domain.com',
password: '123456789',
password_confirmation: '123456789'
)
user.skip_confirmation!
user.save!
Run Code Online (Sandbox Code Playgroud)
该skip_confirmation!电话只是告诉你设计你不需要确认这个帐户.
其他选项只是将confirmed_at用户属性设置为Time.now.utc保存之前.
| 归档时间: |
|
| 查看次数: |
31497 次 |
| 最近记录: |