实战篇笔记-山竹记账后端(一)


创建后端项目

# 把国外地址换成国内地址
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
# 设置国内镜像
bundle config mirror.https://rubygems.org https://gems.ruby-china.com
# 安装 Rails
gem install rails -v 7.0.2.3
# 安装 postresql 驱动
pacman -S postgresql-libs
# 进入工作目录
cd ~/repos
# 创建 Rails 项目,--api 只使用 api 模式,数据库使用 postgresql,跳过测试,项目名
rails new --api --database=postgresql --skip-test mangosteen-1
# 用 VSCode打开,这个时候可以把原来的窗口关掉了
code mangosteen-1
# 新建终端
bundle exe rails server
# 或者 bin/rails s

等待端口启动

=> Booting Puma
=> Rails 7.0.4.2 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.0.0-p0) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 8005
* Listening on http://127.0.0.1:3000

浏览器访问 http://127.0.0.1:3000,发现

ActiveRecord::ConnectionNotEstablished

数据库连接失败,因为没有数据库,终端运行

docker run -d      --name db-for-mangosteen      -e POSTGRES_USER=mangosteen      -e POSTGRES_PASSWORD=123456      -e POSTGRES_DB=mangosteen_dev      -e PGDATA=/var/lib/postgresql/data/pgdata      -v mangosteen-data:/var/lib/postgresql/data      --network=network1      postgres:14

修改 database.yml

development:
  <<: *default
  database: mangosteen_dev
  username: mangosteen
  password: 123456
  host: db-for-mangosteen

再次运行 bin/rails s 看到下面就成功啦

Rails启动成功.png

原来 Rails 这么爽

数据库建模

建模工具:

# bin/rails generate model NAME [field[:type][:index] field[:type][:index]] [options]
bin/rails g model user email:string name:string

会创建两个文件

# app/models/user.rb
class User < ApplicationRecord
end

# db/migrate/20230413060421_create_users.rb
class CreateUsers < ActiveRecord::Migration[7.0]
  // 修改数据库
  def change
    // 创建一个 users 表
    create_table :users do |t|
      // t.type :XXX 添加类型为 type 的 XXX 字段 
      t.string :email
      t.string :name
      // t.timestamps 会生成 created_at(创建时间)和 updated_at(更新时间) 两个字段
      t.timestamps
    end
  end
end

Rails 目录结构说明

执行下面命令,同步到数据库

bin/rails db:migrate

创建路由

# config/routes.rb
// curl http://127.0.0.1:3000/users/1,会调用 users 的 show 方法
get '/users/:id', to: 'users#show'
// curl -X POST http://127.0.0.1:3000/users,会调用 users 的 create 方法
post '/users', to: 'users#create'

创建 controller

控制器生成器:

# bin/rails generate controller NAME [action action] [options]
bin/rails g controller users create show

会创建一个实现方法的文件

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def create
  end

  def show
  end
end

文章作者: April-cl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 April-cl !
  目录