07. rails 创建user模型

rails帮助命令

rails -h

创建user模型

命令行

haima@haima-PC:/media/haima/34E401CC64DD0E28/site/go/src/ruby/circles$ rails g model user
Running via Spring preloader in process 30704
      invoke  active_record
      create    db/migrate/20210110133050_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml

注意
这里注册模型的名字是单数的形式(user),
而数据库表的名字是会自动创建为复数所形式(users)

编写users表迁移文件

编写表迁移文件 20210110133050_create_users.rb

class CreateUsers < ActiveRecord::Migration[6.1]
  def change
    create_table :users do |t|
      t.string :username
      t.string :password
      t.timestamps null:false
    end
  end
end

迁移 users

执行 rails db:migrate 或者 rake db:migrate都可以,

注意

执行后会,会创建没有被迁移的表
已经创建过的表不会再次被创建

haima@haima-PC:/media/haima/34E401CC64DD0E28/site/go/src/ruby/circles$ rails db:migrate
== 20210110133050 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0757s
== 20210110133050 CreateUsers: migrated (0.0758s) =============================

从下图片看到已经创建成功了

控制台操作user表

增/删/改/查

haima@haima-PC:/media/haima/34E401CC64DD0E28/site/go/src/ruby/circles$ rails console #进入控制台
Running via Spring preloader in process 3956
Loading development environment (Rails 6.1.1)
3.0.0 :001 > User #选择user表
 => User (call 'User.connection' to establish a connection) 
3.0.0 :002 > User.create username:'zhangshan',password:'123456' #创建一条记录
  TRANSACTION (0.5ms)  BEGIN
  User Create (0.4ms)  INSERT INTO `users` (`username`, `password`, `created_at`, `updated_at`) VALUES ('zhangshan', '123456', '2021-01-10 14:06:14.558342', '2021-01-10 14:06:14.558342')
  TRANSACTION (16.7ms)  COMMIT
 => #<User id: 1, username: "zhangshan", password: [FILTERED], created_at: "2021-01-10 14:06:14.558342000 +0000", updated_at: "2021-01-10 14:06:14.558342000 +0000"> 
3.0.0 :003 > User.all.to_a #查询所以记录
  User Load (0.8ms)  SELECT `users`.* FROM `users`
 => [#<User id: 1, username: "zhangshan", password: [FILTERED], created_at: "2021-01-10 14:06:14.558342000 +0000", updated_at: "2021-01-10 14:06:14.558342000 +0000">] 
3.0.0 :006 > user = User.first #查询第一条记录并赋值给user变量
  User Load (0.5ms)  SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
 => #<User id: 1, username: "zhangshan", password: [FILTERED], created_at: "2021-01-10 14:06:14.558342000 +0000", updated_at: "2021-01-10 14:06:14.558342000 +0000"> 
3.0.0 :007 > user
 => #<User id: 1, username: "zhangshan", password: [FILTERED], created_at: "2021-01-10 14:06:14.558342000 +0000", updated_at: "2021-01-10 14:06:14.558342000 +0000"> 
3.0.0 :008 > user.id #打印id
 => 1 
3.0.0 :009 > user.username #打印username
 => "zhangshan" 
3.0.0 :010 > user.username = 'lisi' #给username重新赋值
 => "lisi" 
3.0.0 :011 > user.save #修改user.id = 1的这条数据的`username` = 'lisi'
  TRANSACTION (0.3ms)  BEGIN
  User Update (2.9ms)  UPDATE `users` SET `users`.`username` = 'lisi', `users`.`updated_at` = '2021-01-10 14:10:54.782612' WHERE `users`.`id` = 1
  TRANSACTION (860.2ms)  COMMIT
 => true 
3.0.0 :013 > user.destroy #删除user.id = 1 的记录
  TRANSACTION (0.3ms)  BEGIN
  User Destroy (0.4ms)  DELETE FROM `users` WHERE `users`.`id` = 1
  TRANSACTION (17.7ms)  COMMIT
 => #<User id: 1, username: "lisi", password: [FILTERED], created_at: "2021-01-10 14:06:14.558342000 +0000", updated_at: "2021-01-10 14:10:54.782612000 +0000"> 

3.0.0 :017 > User.create username:'zhangshan',password:'123456' #创建
  TRANSACTION (0.2ms)  BEGIN
  User Create (0.4ms)  INSERT INTO `users` (`username`, `password`, `created_at`, `updated_at`) VALUES ('zhangshan', '123456', '2021-01-10 14:20:48.808927', '2021-01-10 14:20:48.808927')
  TRANSACTION (285.9ms)  COMMIT
 => #<User id: 2, username: "zhangshan", password: [FILTERED], created_at: "2021-01-10 14:20:48.808927000 +0000", updated_at: "2021-01-10 14:20:48.808927000 +0000"> 
3.0.0 :018 > User.find(2) #查找id=2的数据
  User Load (0.5ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 LIMIT 1

原文地址:https://www.cnblogs.com/haima/p/14259687.html