[Rails] 검증

11092 단어 I18nRubyRails
간단한 TODO 애플리케이션에 유효성(입력 제한)이 추가되었습니다.
호출create,save,update 등 방법의 정시 집행 검증.

인증 추가


모델에서 작업의 최대 문자 수를 20자로 설정하는 유효성을 설명합니다.
문법은 validates :{カラム名}, {ルール名}: {ルールの内容}입니다.
/app/models/task.rb
class Task < ApplicationRecord
  validates :title, length: {maximum: 20}
end

오류 메시지 표시


검증에 실패하면 가짜 정보를 되돌려주고 @{オブジェクト名}.errors.full_messages 에서 오류 메시지의 배열을 가져옵니다.
먼저 Controller를 수정하고 오류가 발생하면 첫 페이지로 이동하지 마십시오.
/app/controllers/tasks_controller.rb
class TasksController < ApplicationController
.
.
  def create
    @task = Task.new(task_params)
    if @task.save
      redirect_to tasks_url
    else
      render 'tasks/new'
    end
  end
.
.
  def update
    @task = Task.find(params[:id])
    if @task.update(task_params)
      redirect_to tasks_url
    else
      render 'tasks/edit'
    end
  end
.
.
end
그런 다음 오류 메시지를 표시하는 설명을 View 파일에 추가합니다.
/app/views/tasks/new.html.erb
<h1>新規タスク</h1>
<% if @task.errors.any? %>
  <div>
    <ul style="color: red">
      <% @task.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
    </ul>
  </div>
<% end %>
<%= form_for(@task) do |f| %>
・
・
/app/views/tasks/edit.html.erb
<h1>タスク編集</h1>
<% if @task.errors.any? %>
  <div>
    <ul style="color: red">
      <% @task.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
    </ul>
  </div>
<% end %>
<%= form_for(@task) do |f| %>
・
・
・

오류 메시지 일본어


기본 오류 정보는 영어입니다.rails-i18n의gem를 사용하여 일본어화합니다.일단 짐부터 추가해.
gemfile
gem 'rails-i18n'
$ bundle install
다음에 /config/application.rb에 다음과 같은 기술을 추가합니다.
/config/application.rb
.
.
module BoardApp
  class Application < Rails::Application
.
.
    config.i18n.default_locale = :ja
  end
end

모델의 속성명이 영어니까 일본어로 바꾸세요.파일config/locales/ja.yml을 만들고 열 이름과 일본어 대응 표를 다음과 같이 설명합니다.
config/locales/ja.yml
ja:
  activerecord:
    models:
      task:           #model名
    attributes:
      task:           #model名
        title: タスク名 #カラム名
파일을 생성하는 경로입니다.
/config/application.rb
.
.
config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]
.
.

일본어로 나왔어요.

자주 쓰는 발리 일람표


・최대 글자수: length: { maximum: 20 }・최소 문자수: length: { minimum: 20 }・자수 범위: length: { in: 1..30 }・비공식: presence: true・미착용: uniqueness: true・정규 표현식: format: { with: /<正規表現>/}• <속성 이름> confirmation과 일치: confirmation: true

다중 지정 시


여러 개를 지정할 때 규칙은 쉼표로 구분됩니다.
/app/models/task.rb
class Task < ApplicationRecord
  validates :title, length: {maximum: 20}, presence: true, uniqueness: true
end
전자 우편 주소의 입력 제한
model
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, uniqueness: true, format: { with: VALID_EMAIL_REGEX }

참고 자료


Rails 인증 오류 메시지의 일본어화
Rails 발리 일 총결산

좋은 웹페이지 즐겨찾기