[Rails] 검증
호출
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 발리 일 총결산
Reference
이 문제에 관하여([Rails] 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/d0ne1s/items/822f66d16d65ae28162b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)