在添加将用户关联到多个帖子的新迁移后,我测试了一些关联。
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Customization
t.string :name
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
我迁移后,我应该测试一下
u = User.first
接收这段代码,确保一切顺利。
User Load (0.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: 1, name: nil, email: "username@example.com", encrypted_password: "$2a$10$702fd8Io3WH7UTWoTY3rUeUJBcFVlsq8/K6ypPKZUQni...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, confirmation_token: nil, confirmed_at: "2013-04-29 20:25:26", confirmation_sent_at: "2013-04-29 20:25:09", unconfirmed_email: nil, created_at: "2013-04-29 20:25:09", updated_at: "2013-04-29 20:25:26">
但我得到了nil
2.1.5 :001 > u = User.first
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> nil
这是件坏事吗?为什么没有出现什么?
答案 0 :(得分:3)
您的数据库目前是空的。因此你得到一个零。你可以这样做:
1)使用前端的设计注册功能将新用户添加到表中。
2)在db / seeds.rb文件中添加种子数据,如下所示:
User.find_or_create_by(:email => 'tester@test.com', :password => 'password', :password_confirmation => 'password')
从命令提示符运行rake db:seed
。种子数据是您要添加到数据库的初始数据,以便应用程序根据需要运行。
3)使用Rails控制台:在命令提示符下运行rails c
并执行以下操作:
User.create(:email => 'tester@test.com', :password => 'password', :password_confirmation => 'password')
答案 1 :(得分:1)
您需要在控制台中执行以下操作以添加第一个用户:
user = User.new(:email => 'tester@test.com', :password => 'testingpassword',
:password_confirmation => 'testingpassword')
user.save
Devise不为您创建默认用户,因此在您创建一个用户之前,user.first将以nil的形式返回