Rails入门学习

快速搭建项目

在开始Rails之前,需要安装Ruby工具。之后可以通过如下的命令安装rails:

gem install -v 8.1.3 rails

之后就可以正式创建Rails应用了,为了避免下载缓慢的问题,可以配置国内源:

bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems

下面我们创建1个Blog的应用:

rails new blog --skip-bundle
bundle install

这里选择--skip-bundle参数避免工具自动运行bundle install而造成等待缓慢问题,通过手动执行可以知道其具体异常问题。
接着进入blog目录开始创建数据库并将应用运行起来:

bin/rails db:create  # Windows上为rails.bat db:create
bin/rails server     # Windows上为rails.bat server

此时访问http://localhost:3000即可看到Rails默认的欢迎页面。

创建数据库模型

Active Record是Rails中将关系型数据库映射为Ruby代码的一种特性。
下面我们创建1个Product的模型,即Product表,在该表中有1个字段name,通过使用generate子命令进行模型的生成:

$ bin/rails generate model Product name:string
invoke  active_record
      create    db/migrate/20260705214000_create_products.rb
      create    app/models/product.rb
      invoke    test_unit
      create      test/models/product_test.rb
      create      test/fixtures/products.yml

打开create_products.rb文件可以看到如下的内容:

# db/migrate/<timestamp>_create_products.rb
class CreateProducts < ActiveRecord::Migration[8.1]
  def change  # 修改
    create_table :products do |t|  # 创建表
      t.string :name

      t.timestamps
    end
  end
end

之后运行如下的命令进行数据表的迁移:

$ bin/rails db:migrate

若迁移过程发生异常可以运行如下命令进行回滚:

$ bin/rails db:rollback

Rails终端

Rails的终端模式提供了1种交互式编程的方式,通过如下的方式进入终端:

$ bin/rails console
Loading development environment (Rails 8.1.0)
blog(dev)>

此时可以针对之前的Product模型进行一些操作,比如查看其表字段及创建记录:

blog(dev)> Product.column_names
=> ["id", "name", "created_at", "updated_at"]
blog(dev)> product = Product.new(name: "T-Shirt")  # 实例化Product类
=> #<Product:0x000000012e616c30 id: nil, name: "T-Shirt", created_at: nil, updated_at: nil>
blog(dev)> product.save  # 保存到数据库中
=> true

Rails路由

如果对MVC比较熟悉的话,可以很容易理解Rails中路由的定义。比如有如下的请求路径:

GET /products?sale=true&sort=asc

其可能对应Rails中config/routes.rb中如下的代码:

# config/routes.rb
Rails.application.routes.draw do
  # ...
  get "/products", to: "products#index"
end

其中/products是相应的路由地址,而to后面是是控制器中对应的方法。而对应products控制器的文件名称为位于app/controllers下的products_controller.rb。其对应的代码如下:

# app/controllers/products_controller.rb
class ProductsController < ApplicationController
  def index
  end
end

我们可以通过如下的方式生成控制器

$ bin/rails generate controller Products index --skip-routes
      create  app/controllers/products_controller.rb
      invoke  erb
      create    app/views/products
      create    app/views/products/index.html.erb
      invoke  test_unit
      create    test/controllers/products_controller_test.rb
      invoke  helper
      create    app/helpers/products_helper.rb
      invoke    test_unit

之后我们可以通过如下的方法查看其所有路由:

$ bin/rails routes
      Prefix Verb   URI Pattern                  Controller#Action
    products GET    /products(.:format)          products#index
             POST   /products(.:format)          products#create
 new_product GET    /products/new(.:format)      products#new
edit_product GET    /products/:id/edit(.:format) products#edit
     product GET    /products/:id(.:format)      products#show
             PATCH  /products/:id(.:format)      products#update
             PUT    /products/:id(.:format)      products#update
             DELETE /products/:id(.:format)      products#destroy

参考文章:

https://guides.rubyonrails.org/v8.1/getting_started.html

posted @ 2026-07-05 22:17  月薪几千的牛马  阅读(5)  评论(0)    收藏  举报