Ruby: 学习 Ruby

全面的 Ruby 和 Rails 指南

👋 欢迎来到 Stackhero 文档!

Stackhero 提供了一种即用型 Ruby 云 解决方案,具有众多优势,包括:

  • 通过简单的 git push 在几秒钟内 部署您的应用程序。
  • 使用您自己的域名,并享受 HTTPS 证书的自动配置以增强安全性。
  • 享受自动备份一键更新以及简单、透明和可预测的定价带来的安心。
  • 通过私有和专用的 VM获得最佳的性能和强大的安全性

节省时间简化您的生活:尝试 Stackhero 的 Ruby 云托管 解决方案只需 5 分钟

Ruby 是一种高级的解释型编程语言,旨在简化和提高生产力。其优雅的语法让开发者用更少的代码完成更多工作,同时支持过程式、面向对象和函数式编程范式。

Ruby on Rails,通常简称为 Rails 或 RoR,是一个用 Ruby 编写的强大 Web 应用框架。基于模型-视图-控制器 (MVC) 模式构建,Rails 推崇约定优于配置,并强调不重复自己 (DRY) 原则,使构建复杂的 Web 应用程序更容易和高效。

Rails 命令行界面 (CLI) 是管理 Rails 应用程序的强大工具。它包括创建新项目、启动服务器、通过控制台访问应用程序以及生成各种组件(如模型和控制器)的命令。以下是每个 Rails 开发者应该知道的一些基本命令:

  1. 创建一个新的 Rails 项目:

    rails new project_name
    
  2. 启动 Rails 服务器:

    rails server
    
  3. 打开 Rails 控制台:

    rails console
    
  4. 生成一个新的控制器:

    rails generate controller controller_name action_name
    
  5. 生成一个新的模型:

    rails generate model ModelName field:type
    
  6. 运行数据库迁移:

    rails db:migrate
    

路由将传入请求连接到 Rails 应用程序中的适当控制器和动作。它提供了一种简单的方法来设计应用程序的 URL 和端点。路由在 config/routes.rb 文件中定义。以下是一些常见的路由模式:

  1. 根路由:

    root 'controller_name#action_name'
    
  2. 通用路由:

    get '/path', to: 'controller#action'
    
  3. 资源路由(生成标准 CRUD 路由):

    resources :model_name
    

控制器作为模型和视图之间的中介,通过接收传入请求并呈现适当的响应。以下示例说明了列出、显示、创建、更新和删除资源的常见控制器动作:

  1. Index 动作(列出所有对象):

    def index
      @objects = ModelName.all
    end
    
  2. Show 动作(显示单个对象):

    def show
      @object = ModelName.find(params[:id])
    end
    
  3. New 动作(显示新对象的表单):

    def new
      @object = ModelName.new
    end
    
  4. Create 动作(保存新对象):

    def create
      @object = ModelName.new(params.require(:model_name).permit(:field1, :field2))
      if @object.save
        redirect_to @object
      else
        render :new
      end
    end
    
  5. Edit 动作(显示编辑现有对象的表单):

    def edit
      @object = ModelName.find(params[:id])
    end
    
  6. Update 动作(应用对现有对象的更改):

    def update
      @object = ModelName.find(params[:id])
      if @object.update(params.require(:model_name).permit(:field1, :field2))
        redirect_to @object
      else
        render :edit
      end
    end
    
  7. Destroy 动作(删除对象):

    def destroy
      @object = ModelName.find(params[:id])
      @object.destroy
      redirect_to model_name_path
    end
    

ActiveRecord 是 Rails 内置的对象关系映射 (ORM) 系统。它抽象了数据库交互,让您可以将数据库记录作为原生 Ruby 对象进行操作。以下是一些常见的 ActiveRecord 查询,用于获取和操作数据:

  1. 检索所有对象:

    ModelName.all
    
  2. 按 ID 查找对象:

    ModelName.find(id)
    
  3. 按特定字段值查找对象:

    ModelName.find_by(field: value)
    

嵌入式 Ruby (ERB) 是一种模板系统,允许您在 HTML 中嵌入 Ruby 代码。ERB 助手是简化视图中常见任务的方法。以下是一些示例:

  1. 创建链接:

    <%= link_to "Link Text", path %>
    
  2. 显示错误消息:

    <% @object.errors.full_messages.each do |message| %>
      <div><%= message %></div>
    <% end %>
    

迁移允许您以一致和可验证的方式演变数据库架构。它们使用 Ruby DSL,因此您不必手动编写原始 SQL,使您的架构更改与数据库无关。以下是如何创建和运行迁移:

  1. 创建新的迁移:

    rails generate migration MigrationName
    
  2. 在生成的迁移文件中 (db/migrate/):

    class MigrationName < ActiveRecord::Migration[6.0]
      def change
        add_column :table_name, :column_name, :type
        remove_column :table_name, :column_name
      end
    end