Ruby on Rails开发实战

云计算瞭望塔 2023-03-31 ⋅ 17 阅读

在这篇博客中,我们将演示一次实际的Ruby on Rails开发项目。通过实战,我们将探讨如何使用Ruby on Rails框架创建一个简单的Web应用程序,包括数据库设计、模型、控制器和视图的创建,以及与外部API的集成。

目标

我们的目标是创建一个任务管理应用程序,用户可以创建、查看、更新和删除任务。我们希望应用程序具有用户认证、任务优先级和任务截止日期的功能。

步骤

1. 创建新的Rails应用

首先,我们将使用以下命令创建一个新的Rails应用:

$ rails new task_manager

这将创建一个名为task_manager的新项目目录,并安装所需的Rails依赖项。

2. 数据库设计

接下来,我们需要设计数据库模式以存储任务信息。我们将使用SQLite数据库,它是Rails默认的数据库引擎。

db/migrate目录中,我们创建一个新的数据库迁移文件:

$ rails generate migration CreateTasks

编辑生成的迁移文件,定义任务表的结构:

class CreateTasks < ActiveRecord::Migration[6.0]
  def change
    create_table :tasks do |t|
      t.string :title
      t.text :description
      t.integer :priority
      t.date :due_date

      t.timestamps
    end
  end
end

运行数据库迁移以创建任务表:

$ rails db:migrate

3. 创建模型

现在我们将创建一个模型类来操作任务数据。运行以下命令生成模型文件:

$ rails generate model Task

编辑生成的模型文件,定义任务模型和与数据库表的映射关系:

class Task < ApplicationRecord
  validates :title, presence: true
  validates :priority, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 5 }
end

4. 创建控制器和视图

接下来,我们将创建一个控制器用于处理任务的CRUD操作,并创建相应的视图文件用于显示任务。

运行以下命令生成控制器文件:

$ rails generate controller Tasks

编辑生成的控制器文件,定义完成CRUD操作的方法:

class TasksController < ApplicationController
  def index
    @tasks = Task.all
  end

  def show
    @task = Task.find(params[:id])
  end

  def new
    @task = Task.new
  end

  def create
    @task = Task.new(task_params)
    
    if @task.save
      redirect_to @task
    else
      render 'new'
    end
  end

  def edit
    @task = Task.find(params[:id])
  end

  def update
    @task = Task.find(params[:id])

    if @task.update(task_params)
      redirect_to @task
    else
      render 'edit'
    end
  end

  def destroy
    @task = Task.find(params[:id])
    @task.destroy

    redirect_to tasks_path
  end

  private

  def task_params
    params.require(:task).permit(:title, :description, :priority, :due_date)
  end
end

创建相应的视图文件用于显示任务列表、任务详情、创建任务和编辑任务。

5. 集成用户认证

为了允许用户创建和管理他们自己的任务,我们将添加用户认证功能。Rails提供了一个名为Devise的开源认证解决方案。

Gemfile中添加devise

gem 'devise'

运行以下命令安装和生成devise配置:

$ bundle install
$ rails generate devise:install
$ rails generate devise User

运行数据库迁移以创建用户表:

$ rails db:migrate

在必要的地方添加before_action :authenticate_user!以限制对任务的访问。

6. 集成外部API

为了增强我们的任务管理应用程序,我们将添加一个天气接口作为外部API的示例。

Gemfile中添加httparty

gem 'httparty'

创建一个新的API类用于获取天气信息:

class WeatherAPI
  include HTTParty
  base_uri 'https://api.weather.com'

  def self.weather(city)
    response = get("/weather/#{city}")
    response.parsed_response['weather']
  end
end

在任务控制器中,我们将通过调用WeatherAPI.weather(city)来获取天气信息,并将其传递给视图层。

至此,我们的Ruby on Rails开发实战项目演练完成,我们已经学习了如何使用Ruby on Rails框架创建一个简单的任务管理应用程序,并集成了用户认证和外部API。

希望这篇博客对你了解Ruby on Rails开发有所帮助,如果你对这个主题还有其他问题,请随时留言!


全部评论: 0

    我有话说: