Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

Deep Dive Devise: ผสาน DeviseInvitable สำหรับ User Invitations ที่ราบรื่น

Introduction

ในส่วนแรกของ tutorial เราเรียนรู้การติดตั้ง Devise และ setup ใน Rails application ในส่วนนี้ เราจะดูวิธี integrate DeviseInvitable

DeviseInvitable เป็น extension ที่ทำงานกับ Devise ด้วย DeviseInvitable ในแอป users สามารถเชิญเพื่อนผ่าน emails ได้ ฟีเจอร์นี้เก๋บมากสำหรับ collaboration app

Setting Up DeviseInvitable

เปิด Gemfile เพิ่ม gem:

รัน bundle install

รัน generator command เพิ่ม DeviseInvitable config options ไปใน Devise config file

ดูการเปลี่ยนแปลงใน config/initializers/devise.rb

ต่อไป เพิ่ม DeviseInvitable ให้ User model

จะเพิ่ม flag :invitable ให้ model User model จะเป็น:

Command ด้านบนยัง generate migration file แบบนี้:

Migrate database ด้วย rake db:migrate

Configuring the Controller for DeviseInvitable

DeviseInvitable ต้องการ parameters ตอนส่ง invite ต้อง whitelist parameters ที่จำเป็น แก้ app/controllers/application_controller.rb ให้เป็น:

จากด้านบน เห็นว่า :email whitelisted สำหรับ DeviseInvitable

ลองใน console รัน rails console ใส่:

ควรได้ output แบบนี้ (อาจต่างกันนิดหน่อย):

ทำงานตามแผน

ไม่ไหวให้ users ส่ง invitations ผ่าน command line ต้อง setup DeviseInvitable frontend รัน generator สร้าง views:

rails generate devise_invitable:views users

เพิ่ม link ไปหน้าส่ง invites (app/views/users/invitations/new.html.erb) ใน navigation file:

ดู routes ของ DeviseInvitable: rake routes | invit output:

ลองดูตอนนี้ รัน server rails server ไปที่ https://localhost:3000/users/invitation/new กรอก email submit ควรทำงาน! ใน server logs จะเห็น link accept invite

ดีกว่าถ้าดู email ใน browser ได้ มาดูวิธีทำ

Integrating Letter_Opener

Letter Opener preview emails ใน browser default ไม่ต้อง setup mail delivery system ใน development

Gemfile เพิ่ม:

gem 'letter_opener'

รัน bundle install

แก้ config/environments/development.rb เพิ่ม:

Restart server ไป https://localhost:3000/users/invitation/new กรอก submit คราวนี้หน้าต่างใหม่ pop up แสดง invite email

Change Default Sign In and Sign Out Routes

Default sign_in และ sign_out routes ของ Devise:

sign_in: https://localhost:3000/users/sign_in

sign_out: https://localhost:3000/users/sign_out

แก้ใน config/routes.rb เพิ่ม:

ไป https://localhost:3000/signin ได้แล้ว

Conclusion

ตอนนี้รู้ใช้ DeviseInvitable แล้ว ยังรู้ gem letter_opener มีอะไรทำกับ Devise เยอะ เช็ค Wiki เรียนรู้เพิ่ม ขอบคุณที่ติดตาม