[Rails] devise에 열 추가
왜 썼어요?
devise로 사용자 인증을 하면 이메일과password는 처음부터 있었지만 가입자는 이름이 필요하죠.나는 항상 이렇게 생각하기 때문에 적어 둔다.
전제 조건
rails g devise User
열 추가
DB에 열을 추가할 때는 일반적으로 다음과 같은 쓰기 방법을 사용합니다.
어쨌든 그 이전 파일을 뭘 하는지 알 수 있는 파일 이름으로 만들자.
이름을 붙일 때
AddColumnToUsers
가 '사용자 테이블에 열을 추가합니다' 라는 뜻으로 쓰이면 다음 열을 추가할 때 이름이 번거롭기 때문에 주의해야 합니다.가열=DB 디자인을 잘해야 한다고 생각했는데 아직 이 분야에 대한 지식이 얕아서 좀 강한 사람에게 알려주셨으면 좋겠어요.$ rails generate migration Addカラム名Toテーブル名 追加するカラム:データ型
$ rails generate migration AddNameToUsers name:string
XXXXXXXXXXX_add_name_to_users.rbclass AddNameToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :name, :string
end
end
$ rails db:migrate
Controller 및 View 수정
registrations/new.html.erb
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>
# ここから追加
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true %>
</div>
# ここまで
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "devise/shared/links" %>
뷰에서 날아온name의 정보를 받기 위해
application_controller.rb
에 다음과 같은 내용을 추가한다.application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
다음 코드는 application.html.erb
에 기술됩니다.current_user
는 devise가 제공하는 방법 중 하나로 로그인한 사용자의 정보를 얻을 수 있다.application.html.erb
<% if current_user.present? %>
<p>こんにちは、<%= current_user.name %>さん!</p>
<% else %>
<p>こんにちは、ゲストさん!</p>
<% end %>
잘 나오면 오케이!Reference
이 문제에 관하여([Rails] devise에 열 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nowshi/items/a7220036a684a9ac4bb4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)