레일스 생성기

3185 단어
Rails는 백엔드 개발 속도를 높일 수 있는 많은 유용한 방법을 제공합니다. 정말 편리한 도구 중 하나는 생성기입니다.

생성기는 반복적인 코드를 처리하여 백엔드 구조를 신속하게 생성하는 데 사용되므로 애플리케이션의 보다 고유한 측면에 집중할 수 있습니다.

레일 생성으로 생성할 수 있는 여러 가지가 있으며 가장 일반적으로 접할 수 있는 것은 다음과 같습니다.

rails generate

controller
migration
model
resource
scaffold
serializer


모델


rails g model <model_name> 인수로 전달된 경우 테이블의 열 이름을 포함하는 마이그레이션 파일을 생성합니다.
예를 들어 rails g model Pen brand color price:integer 다음 마이그레이션 파일을 생성합니다.

# 20220507194429_create_pens.rb

class CreatePens < ActiveRecord::Migration[6.1]
  def change
    create_table :pens do |t|
      t.string :brand
      t.string :color
      t.integer :price

      t.timestamps
    end
  end
end


모델 파일:

# pen.rb

class Pen < ApplicationRecord
end


및 사양 파일:

# pen_spec.rb

require 'rails_helper'

RSpec.describe Pen, type: :model do
  pending "add some examples to (or delete) #{__FILE__}"
end


자원


rails g resource Pen brand color price:integer 직렬 변환기와 함께 위의 모든 파일을 생성합니다.

# pen_serializer.rb

class PenSerializer < ActiveModel::Serializer
  attributes :id, :brand, :color, :price
end


제어 장치:

# pens_controller.rb

class PensController < ApplicationController
end


귀하의 경로:

# routes.rb

Rails.application.routes.draw do
  resources :pens
end


그리고 몇 가지 추가 사양.

발판


rails g scaffold Pen brand color price:integer 위의 모든 것을 생성하지만 컨트롤러에 대한 전체 CRUD 기능을 추가합니다.

# pens_controller.rb

class PensController < ApplicationController
  before_action :set_pen, only: [:show, :update, :destroy]

  # GET /pens
  def index
    @pens = Pen.all

    render json: @pens
  end

  # GET /pens/1
  def show
    render json: @pen
  end

  # POST /pens
  def create
    @pen = Pen.new(pen_params)

    if @pen.save
      render json: @pen, status: :created, location: @pen
    else
      render json: @pen.errors, status: :unprocessable_entity
    end
  end

  # PATCH/PUT /pens/1
  def update
    if @pen.update(pen_params)
      render json: @pen
    else
      render json: @pen.errors, status: :unprocessable_entity
    end
  end

  # DELETE /pens/1
  def destroy
    @pen.destroy
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_pen
      @pen = Pen.find(params[:id])
    end

    # Only allow a list of trusted parameters through.
    def pen_params
      params.require(:pen).permit(:brand, :color, :price)
    end
end


그리고 더 많은 사양 파일.

물론 이 모든 코드가 어떻게 작동하고 왜 작동하는지 아는 것이 중요합니다. 그러나 몇 가지 레일 프로젝트에서 작업한 후에는 생성기를 사용하여 대부분의 애플리케이션에 대한 기본 프레임워크를 빠르고 쉽게 만들 수 있습니다.

좋은 웹페이지 즐겨찾기