【rails】devise로 생년월일을 등록할 때의 요령
devise를 사용하여 사용자 관리를 구현했습니다.
갑작스럽게 구현하여 내놓은 에러를 소개합니다.
[1]date_select 사용
date_select란 무엇인가.
이것은 양식의 입력 형식과 같으며 생년월일과 날짜 및 시간 등록에 매우 유용합니다.
devise/registrations/new.html.haml .content_wrapper
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= render "devise/shared/error_messages", resource: resource
-# お名前の入力エリア
.field
= f.label :name
%br/
= f.text_field :name, autofocus: true, autocomplete: "name"
-# 生年月日の入力エリア
.field
= f.label :birth_date
%br/
= f.date_select :birth_date, use_month_numbers: true,start_year: 1930, end_year: (Time.now.year - 10), default: Date.new(1989, 1, 1)
기원과 월일을 입력하는 풀다운이 나타납니다.
풀다운을 3개 준비한다고 생각하고, 「date_select」를 사용하는 것으로, 3개 정리해 나옵니다.
레코드에 들어가는 것은 이런 느낌의 형식이 됩니다.
보통의 풀다운은 select
를 사용합니다만, 그것이라고 입력하는 항목을 스스로 필기하지 않으면 이케나이 때문에 매우 귀찮습니다.
copipe로 구현할 수 있도록 해주는 페이지도 있지만,
많은 양의 코드를 작성하는 대신은 없습니다.
참고
【코피페】HTML 폼의 select 항목 정리(생년월일·연령·도도부현·직업)
[2] 데이터형은 date를 사용한다
테이블을 추가할 때, 생년월일 컬럼의 데이터형은 「date」가 되도록 한다.
그렇지 않으면, haml에 f.date_select
를 기재한 시점에서 데이터형 다르다고 하는 에러가 나옵니다.
마이그레이션 파일은 다음과 같습니다.
20191228100045_devise_create_users.rb# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.date :birth_date, null: false
# 省略
end
# 省略
end
end
자세한 추가 방법은 아래의 기사를 참고로!
Devise의 설정 순서를 정리해 보았다. 그 1 도입편
[3] 마이그레이션 파일에 default: ""를 쓰지 않음
어쨌든 text나 string과 같은 느낌으로, 데이터형만 date
로 해 두면 마이그레이션할 수 있을 것이라고 생각하면, default: ""
가 써 있는 것으로써 마이그레이션할 수 없었습니다.
[2]에서도 썼습니다만, 아래와 같이 default: ""
없이 하지 않으면, $ rake db:migrate
의 때에 이끼 합니다.
풀다운으로 입력하기 때문에 default: ""
라는 모순이니까 마이그레이트 데키나이요! 라는 것입니다.
20191228100045_devise_create_users.rb# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.date :birth_date, null: false
# 省略
end
# 省略
end
end
[4]devise를 일본어 대응하면 use_month_numbers: true 추가
달의 표시를 [Jan.][Feb.]등의 영어 표기가 되지 않도록 할 수 있습니다.
devise/registrations/new.html.haml= f.date_select :birth_date, use_month_numbers: true, ~省略~
몇 번이나 문지르고 있습니다만, 이 부분이군요.
[5] 입력 범위를 좁히자
devise/registrations/new.html.haml .content_wrapper
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= render "devise/shared/error_messages", resource: resource
~省略~
-# 生年月日の入力エリア
.field
= f.label :birth_date
%br/
= f.date_select :birth_date, use_month_numbers: true,
start_year: 1930, #入力値の開始位置(西暦)
end_year: (Time.now.year - 10), #入力値の終了位置(現在から10年前に指定)
default: Date.new(1989, 1, 1) #デフォルトで表示されている値
입력 범위를 좁히지 않고 구현하면, 서기 부분이 끝없이 나오기 때문에, 이와 같이 짜내면 사용자가 선택하기 쉬워집니다.
예를 들어, 18세 이상이 아니면 등록할 수 없는 사이트였던 경우, end_year: (Time.now.year - 18)
로 하는 것으로, 18세 이하의 입력을 제한하는 것이 가능할까 생각합니다.
글쎄, 그렇게 많은 욕망은
결론
엄청 기본적이라고 할까, 보통으로 하고 있으면 나오지 않는 에러 내었으므로, 메모가 테라 기사 써 보았습니다.
요령은 범 실수 대책이군요.
devise에서 생일을 입력하는 간단한 미니 앱을 만들고 싶은 분은 아래의 기사를 부디! (PR)
【rails】devise와 date_select를 사용하여 나이의 수만큼 우 ● 코 표시
Reference
이 문제에 관하여(【rails】devise로 생년월일을 등록할 때의 요령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TheOkachanPG/items/671ebb9771d370500ae5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
.content_wrapper
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= render "devise/shared/error_messages", resource: resource
-# お名前の入力エリア
.field
= f.label :name
%br/
= f.text_field :name, autofocus: true, autocomplete: "name"
-# 生年月日の入力エリア
.field
= f.label :birth_date
%br/
= f.date_select :birth_date, use_month_numbers: true,start_year: 1930, end_year: (Time.now.year - 10), default: Date.new(1989, 1, 1)
테이블을 추가할 때, 생년월일 컬럼의 데이터형은 「date」가 되도록 한다.
그렇지 않으면, haml에
f.date_select
를 기재한 시점에서 데이터형 다르다고 하는 에러가 나옵니다.마이그레이션 파일은 다음과 같습니다.
20191228100045_devise_create_users.rb
# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.date :birth_date, null: false
# 省略
end
# 省略
end
end
자세한 추가 방법은 아래의 기사를 참고로!
Devise의 설정 순서를 정리해 보았다. 그 1 도입편
[3] 마이그레이션 파일에 default: ""를 쓰지 않음
어쨌든 text나 string과 같은 느낌으로, 데이터형만 date
로 해 두면 마이그레이션할 수 있을 것이라고 생각하면, default: ""
가 써 있는 것으로써 마이그레이션할 수 없었습니다.
[2]에서도 썼습니다만, 아래와 같이 default: ""
없이 하지 않으면, $ rake db:migrate
의 때에 이끼 합니다.
풀다운으로 입력하기 때문에 default: ""
라는 모순이니까 마이그레이트 데키나이요! 라는 것입니다.
20191228100045_devise_create_users.rb# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.date :birth_date, null: false
# 省略
end
# 省略
end
end
[4]devise를 일본어 대응하면 use_month_numbers: true 추가
달의 표시를 [Jan.][Feb.]등의 영어 표기가 되지 않도록 할 수 있습니다.
devise/registrations/new.html.haml= f.date_select :birth_date, use_month_numbers: true, ~省略~
몇 번이나 문지르고 있습니다만, 이 부분이군요.
[5] 입력 범위를 좁히자
devise/registrations/new.html.haml .content_wrapper
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= render "devise/shared/error_messages", resource: resource
~省略~
-# 生年月日の入力エリア
.field
= f.label :birth_date
%br/
= f.date_select :birth_date, use_month_numbers: true,
start_year: 1930, #入力値の開始位置(西暦)
end_year: (Time.now.year - 10), #入力値の終了位置(現在から10年前に指定)
default: Date.new(1989, 1, 1) #デフォルトで表示されている値
입력 범위를 좁히지 않고 구현하면, 서기 부분이 끝없이 나오기 때문에, 이와 같이 짜내면 사용자가 선택하기 쉬워집니다.
예를 들어, 18세 이상이 아니면 등록할 수 없는 사이트였던 경우, end_year: (Time.now.year - 18)
로 하는 것으로, 18세 이하의 입력을 제한하는 것이 가능할까 생각합니다.
글쎄, 그렇게 많은 욕망은
결론
엄청 기본적이라고 할까, 보통으로 하고 있으면 나오지 않는 에러 내었으므로, 메모가 테라 기사 써 보았습니다.
요령은 범 실수 대책이군요.
devise에서 생일을 입력하는 간단한 미니 앱을 만들고 싶은 분은 아래의 기사를 부디! (PR)
【rails】devise와 date_select를 사용하여 나이의 수만큼 우 ● 코 표시
Reference
이 문제에 관하여(【rails】devise로 생년월일을 등록할 때의 요령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TheOkachanPG/items/671ebb9771d370500ae5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :name, null: false, default: ""
t.date :birth_date, null: false
# 省略
end
# 省略
end
end
달의 표시를 [Jan.][Feb.]등의 영어 표기가 되지 않도록 할 수 있습니다.
devise/registrations/new.html.haml
= f.date_select :birth_date, use_month_numbers: true, ~省略~
몇 번이나 문지르고 있습니다만, 이 부분이군요.
[5] 입력 범위를 좁히자
devise/registrations/new.html.haml .content_wrapper
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= render "devise/shared/error_messages", resource: resource
~省略~
-# 生年月日の入力エリア
.field
= f.label :birth_date
%br/
= f.date_select :birth_date, use_month_numbers: true,
start_year: 1930, #入力値の開始位置(西暦)
end_year: (Time.now.year - 10), #入力値の終了位置(現在から10年前に指定)
default: Date.new(1989, 1, 1) #デフォルトで表示されている値
입력 범위를 좁히지 않고 구현하면, 서기 부분이 끝없이 나오기 때문에, 이와 같이 짜내면 사용자가 선택하기 쉬워집니다.
예를 들어, 18세 이상이 아니면 등록할 수 없는 사이트였던 경우, end_year: (Time.now.year - 18)
로 하는 것으로, 18세 이하의 입력을 제한하는 것이 가능할까 생각합니다.
글쎄, 그렇게 많은 욕망은
결론
엄청 기본적이라고 할까, 보통으로 하고 있으면 나오지 않는 에러 내었으므로, 메모가 테라 기사 써 보았습니다.
요령은 범 실수 대책이군요.
devise에서 생일을 입력하는 간단한 미니 앱을 만들고 싶은 분은 아래의 기사를 부디! (PR)
【rails】devise와 date_select를 사용하여 나이의 수만큼 우 ● 코 표시
Reference
이 문제에 관하여(【rails】devise로 생년월일을 등록할 때의 요령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TheOkachanPG/items/671ebb9771d370500ae5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
.content_wrapper
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= render "devise/shared/error_messages", resource: resource
~省略~
-# 生年月日の入力エリア
.field
= f.label :birth_date
%br/
= f.date_select :birth_date, use_month_numbers: true,
start_year: 1930, #入力値の開始位置(西暦)
end_year: (Time.now.year - 10), #入力値の終了位置(現在から10年前に指定)
default: Date.new(1989, 1, 1) #デフォルトで表示されている値
엄청 기본적이라고 할까, 보통으로 하고 있으면 나오지 않는 에러 내었으므로, 메모가 테라 기사 써 보았습니다.
요령은 범 실수 대책이군요.
devise에서 생일을 입력하는 간단한 미니 앱을 만들고 싶은 분은 아래의 기사를 부디! (PR)
【rails】devise와 date_select를 사용하여 나이의 수만큼 우 ● 코 표시
Reference
이 문제에 관하여(【rails】devise로 생년월일을 등록할 때의 요령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TheOkachanPG/items/671ebb9771d370500ae5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)