MVC with Ruby on Rails

63 阅读1分钟

与Web应用程序类似,rails也遵循MVC模式,可从一个简单的功能理解rails的MVC

举个例子:实现新增一条数据

  1. 建模型(表)Modal
bin/rails g model user email:string name:string

在创建的db/migrate/xxx_create_users.rb文件可修改表字段的限制条件

class CreateUsers < ActiveRecord::Migration[7.0]
 def change
   create_table :users do |t|
     t.string :email
     t.string :name, limit: 100

     t.timestamps
   end
 end
end

limit: 100 限制为100个字符

  1. 同步到数据库
bin/rails db:migrate
  1. 创建路由 Router config/routes.rb
get '/users/:id', to: 'users#show'
post '/users/', to: 'users#create'

当请求post,就会调用UsersController的create方法

  1. 创建controller 输出 JSON 视图 Controller、Render(View)
bin/rails g controller users show create

创建方法打render相关内容

class UsersController < ApplicationController
  def show
    render json: 'show'
  end

  def create
    render json: 'create'
  end
end
  1. 验证

发出post请求是否会调用对应的create方法

bin/rails s

curl -X POST http://127.0.0.1:3000/users -v

控制台打印 create

在postgreSQL中查看uses表的确新增了一条!

回滚

step 表示回滚几步

bin/rails db:rollback step=1  // 相当于bin/rails db:rollback

常见的场景是同步数据库后需要回滚

模型与数据库的交互

  1. 启动控制台
bin/rails c                                                                         
  1. 初始化一个新的User对象
Loading development environment (Rails 7.0.7)
irb> user = User.new(email: "chili@x.com", name: "chili")

它只在控制台中的当前时刻可用,未保存到数据库

  1. 将对象保持到数据库
irb>user.save
  1. 查看user对象
irb>user

发现当我们保存对象时,对象的id、created_at和updated_at属性Rails会为我们生成好。我们可以借助id查找数据

  1. 查找 查找id为2的数据
irb>user.find(2)

查找所有数据

irb>user.all

参考: ruby on rails