Advertisement
  1. Code
  2. Ruby on Rails

Khám phá Devise, Phần 2

Difficulty:BeginnerLength:ShortLanguages:
This post is part of a series called Exploring Devise.
Exploring Devise, Part 1

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Lời giới thiệu

Trong phần đầu của chủ đề này, chúng ta đã học cách cài đặt Devise và thiết lập nó trong ứng dụng Rails của chúng ta. Trong phần này, chúng ta sẽ tìm hiểu cách tích hợp DeviseInvitable.

DeviseInvitable là một phần mở rộng hoạt động cùng với Devise. Với DeviseInvitable trong ứng dụng của bạn, người dùng của bạn có thể mời bạn bè của họ thông qua email. Đây là một tính năng tuyệt vời để thêm vào trong ứng dụng của bạn nếu bạn đang xây dựng một ứng dụng cộng tác.

Thiết lập DeviseInvitable

Mở Gemfile của bạn và thêm gem vào:

Chạy lệnh để cài đặt bundle bundle install.

Chạy lệnh generate để thêm tùy chọn cấu hình DeviseInvitable vào tập tin cấu hình Devise.

Bạn có thể thấy những thay đổi mới bằng cách kiểm tra tập tin config/initializers/devise.rb với trình soạn thảo văn bản của bạn.

Tiếp theo, hãy thêm DeviseInvitable vào model User của bạn.

Điều này sẽ thêm cờ :invitable vào model của bạn, do đó model User của bạn sẽ trông giống như cái này:

Chạy lệnh ở trên cũng tạo ra một tập tin di trú mà trông giống như những gì tôi có dưới đây:

Bây giờ di chuyển cơ sở dữ liệu của bạn bằng cách chạy rake db:migrate.

Cấu hình Controller cho DeviseInvitable

DeviseInvitable yêu cầu được truyền một số tham số khi gửi một lời mời. Để điều này hoạt động, chúng ta cần phải tạo một danh sách trắng với các tham số cần thiết sẽ được sử dụng. Sử dụng trình soạn thảo văn bản của bạn, mở tập tin app/controllers/application_controller.rb và làm cho nó trông giống những gì mà tôi có ở dưới:

Từ ở trên, bạn có thể thấy rằng :email đã được đưa vào danh sách trắng cho DeviseInvitable.

Bây giờ chúng ta hãy xem những gì chúng ta có thông qua giao diện dòng lệnh của chúng ta. Trên terminal của bạn, chạy rails console và nhập những gì bạn có dưới đây.

Nó sẽ tạo ra những thứ trông giống như những gì tôi có dưới đây, mặc dù sẽ có thể có sự khác biệt.

Nó hoạt động như đã định.

Bạn không muốn người dùng của bạn gửi thư mời thông qua giao diện dòng lệnh, do đó, quan trọng là chúng ta thiết lập DeviseInvitable để nó hoạt động ở front end. Thực hiện điều này là rất đơn giản; chạy lệnh generate để tạo ra các view cho DeviseInvitable.

rails generate devise_invitable:views users

Bạn cũng sẽ cần phải thêm một liên kết đến một nơi nào đó trong ứng dụng của bạn mà trỏ đến trang gửi lời mời (app/views/users/invitations/new.html.erb).

Đối với ứng dụng này, bạn có thể thêm liên kết trong tập tin navigation của bạn. Dưới đây là cách tôi đã làm:

Để xem các route được tạo ra bởi DeviseInvitable, chạy lệnh rake routes | invit. Dưới đây là những gì mà nó xuất ra.

Chúng ta hãy xem những gì chúng ta có tại thời điểm này. Chạy lệnh để khởi động server của bạn; rails server.

Mở trình duyệt và truy cập vào http://localhost:3000/users/invitation/new. Nhập địa chỉ email trong form, và nhấp vào nút. Nó sẽ  hoạt động! Nếu bạn truy cập vào tập tin logs của máy chủ của bạn, bạn sẽ thấy một đầu ra đã được tạo khi bạn gửi lời mời. Tại đầu ra, bạn sẽ thấy một liên kết để chấp nhận lời mời.

Bạn sẽ đồng ý với tôi là nó sẽ tốt hơn nếu bạn có thể xem email được gửi trong trình duyệt của bạn. Chúng ta hãy xem làm thế nào để điều đó hoạt động được.

Tích hợp Letter_Opener

Letter Opener cho phép bạn xem trước các email trong trình duyệt mặc định của bạn. Với nó, bạn không phải thiết lập một hệ thống gởi thư khi làm việc trong môi trường phát triển.

Mở Gemfile của bạn và thêm gem dưới đây:

gem 'letter_opener'

Chạy bundle install.

Sử dụng trình soạn thảo văn bản của bạn, điều hướng đến config/environments/development.rb và thêm dòng code sau:

Khởi động lại rails server của bạn. Truy cập đến http://localhost:3000/users/invitation/new. Điền và gởi form hiển thị trong đó. Lần này, một trang mới sẽ bật lên có chứa email lời mời.

Thay đổi các Route Đăng nhập và Đăng xuất mặc định

Mặc định, các route sign_insign_out khi sử dụng Devise trông giống như thế này:

sign_inhttp://localhost:3000/users/sign_in

sign_outhttp://localhost:3000/users/sign_out

Để thay đổi nó, hãy vào config/routes.rb và thêm những thứ sau đây:

Bạn có thể truy cập http://localhost:3000/signin.

Kết luận

Bây giờ bạn biết cách tận dụng DeviseInvitable. Bạn cũng đã tìm hiểu về gem letter_opener. Có rất nhiều thứ bạn có thể làm với Devise, vì vậy hãy kiểm tra Wiki để tìm hiểu thêm. Cảm ơn bạn đã theo dõi.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.