기존 PJ에 devise confirmable 구현 (Ruby on Rails)
Ruby on Rails 기존 PJ에 devise confirmable 구현
ぃ tp // 이 m / 시가 ぇ s / s ms / f4274088f20832252374
구현 상태 확인
상기의 기사를 참고로 실장 상황의 확인을 실시한다.
1: default url
environments/developments.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config/routes.rb
root to: 'home#index'
→ 이대로 했습니다.
2: Deivise View 파일 생성
→Devise용 View 파일은 생성되지 않았기 때문에 이 타이밍에 작성했습니다.
Expected string default value for '--jbuilder'; got true (boolean)
Expected boolean default value for '--markerb'; got :erb (string)
invoke Devise::Generators::SharedViewsGenerator
create app/views/devise/shared
create app/views/devise/shared/_links.html.erb
invoke form_for
create app/views/devise/confirmations
create app/views/devise/confirmations/new.html.erb
create app/views/devise/passwords
create app/views/devise/passwords/edit.html.erb
create app/views/devise/passwords/new.html.erb
create app/views/devise/registrations
create app/views/devise/registrations/edit.html.erb
create app/views/devise/registrations/new.html.erb
create app/views/devise/sessions
create app/views/devise/sessions/new.html.erb
create app/views/devise/unlocks
create app/views/devise/unlocks/new.html.erb
invoke erb
create app/views/devise/mailer
create app/views/devise/mailer/confirmation_instructions.html.erb
create app/views/devise/mailer/password_change.html.erb
create app/views/devise/mailer/reset_password_instructions.html.erb
create app/views/devise/mailer/unlock_instructions.html.erb
3:flash 메시지의 설정은 이 타이밍에서는 스루 했습니다.
4:Rails3.2에 대한 설정은 필요하지 않았습니다.
기존 사용자 테이블에 confirmable에 대한 열 추가
이번 프로젝트에서는, ridgepole에서의 DB 관리를 실시하고 있기 때문에 거기에 적합한 수법으로 컬럼 추가를 실시했습니다.
ぃふぇ. 코오 k 파 d. 코m/엔트리/2014/08/28/194147
예를 들어, user table에 하나의 컬럼을 추가할 때 DB(이 PJ에서는 MySQL) 측에서 컬럼을 추가합니다.
ALTER TABLE tbl_name ADD [COLUMN] column_definition;
DB 측에서 컬럼 추가가 완료되면 다음 rake 작업을 수행합니다.
bundle exec rake ridgepole:export
성공한다고 한 것 같은 느낌이 된다.confirmable용의 컬럼으로서 하기를 추가.
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
rails s와
http://localhost:3000/users/sign_in
에 오류undefined method `new_confirmation_path' for #<#<Class:0x007f108477ee08>:0x007f108c420308>
Did you mean? new_user_confirmation_path
user_confirmation_path
여기는
new_user_confirmation_path
로 수정하여 화면이 정상적으로 표시되었습니다.수정 후의 화면은 아래와 같이 되었습니다.
계정 등록 이메일 보내기
gmail의 설정, 송신용 메일을 설정합니다.
기본적으로 참고 문서 ぃ tp // 이 m / shiga ぇ s / s / ms / 73d7bd7 e c59 a 001-cd74
의 거리입니다만, 일부 다른 곳이 있었습니다.
config/initializers/devise.rb
Devise.setup do |config|
~省略~
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class
# with default "from" parameter.
config.mailer_sender = '認証メールの送信元のメールアドレス'
end
config/environmetns/developments.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
# mail setting
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:enable_starttls_auto => true,
:address => "smtp.gmail.com",
:port => 587,
:domain => 'smtp.gmail.com',
:user_name => "[email protected]", #gmailアドレス
:password => "password", #gmailパスワード
:authentication => 'login',
}
Sign Up하면 오류가 발생했습니다. 아래 로그
Started POST "/users" for 127.0.0.1 at 2017-07-15 00:52:53 +0900
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Cu1CQIG9vGl2nChHvYoZh3D+uNLgKMVgWuNRDUOGCP5xUFHwOZu/cvcD9lrUHyd1JOAdkjBcGnoJZUT+1VCfpw==", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
[1m[35m (0.4ms)[0m [1m[35mBEGIN[0m
[1m[36mUser Exists (0.8ms)[0m [1m[34mSELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY '[email protected]' LIMIT 1[0m
[1m[35m (0.3ms)[0m [1m[31mROLLBACK[0m
Completed 500 Internal Server Error in 244ms (ActiveRecord: 1.5ms)
NameError (undefined local variable or method `confirmed_at' for #<User:0x007f108c896298>
Did you mean? confirmed?):
몇가지 에러 메시지로부터 검색해 보았지만, 원인을 모르고… 일단 방치해 다음날 시험해 보면 잘 된다. 그 때의 로그는 아래.
Started POST "/users" for 127.0.0.1 at 2017-07-16 14:37:38 +0900
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"bj+knqhJcxtaKTddaWc75z9JgFiJLWn6qwhgJcolQLsVgrcuEG9wANu26UAA8gUVa1clGFlZtuD4jnXWXPPX4g==", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
[1m[35m (0.4ms)[0m [1m[35mBEGIN[0m
[1m[36mUser Exists (4.9ms)[0m [1m[34mSELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY '[email protected]' LIMIT 1[0m
[1m[35mSQL (9.2ms)[0m [1m[32mINSERT INTO `users` (`email`, `encrypted_password`, `created_at`, `updated_at`, `confirmation_token`, `confirmation_sent_at`) VALUES ('[email protected]', '$2a$11$yiWrcbLuo0tDRfAq6nHZyumDu.d1tHxpRpj3JOufTxFumJKQInqnS', '2017-07-16 05:37:39', '2017-07-16 05:37:39', '2GHvUrpN-z44ENx_prW5', '2017-07-16 05:37:39')[0m
[1m[35m (11.1ms)[0m [1m[35mCOMMIT[0m
Rendering devise/mailer/confirmation_instructions.html.erb
Rendered devise/mailer/confirmation_instructions.html.erb (1.6ms)
Devise::Mailer#confirmation_instructions: processed outbound mail in 1637.4ms
Sent mail to [email protected] (5299.1ms)
Date: Sun, 16 Jul 2017 14:37:45 +0900
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Welcome [email protected]!</p>
<p>You can confirm your account email through the link below:</p>
<p><a href="http://localhost:3000/users/confirmation?confirmation_token=2GHvUrpN-z44ENx_prW5">Confirm my account</a></p>
이것으로 등록 메일을 보내 인증하고 로그인하는 곳까지의 설정이 완료되었습니다.
(재부팅이 필요했던 것 같습니다 → 출처)
이번 기사는 여기까지입니다.
Reference
이 문제에 관하여(기존 PJ에 devise confirmable 구현 (Ruby on Rails)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akahirout2641/items/39333b5ca88be6ce81fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)