عند استخدام جهاز Devise لإدارة المصادقة في تطبيقك، قمت بتضمين وظيفة :confirmable
لتفعيل تأكيد الحساب عبر البريد الإلكتروني. هذا يعني أنه بمجرد أن يسجل المستخدم، سيتم إرسال بريد إلكتروني إليه يحتوي على رابط يجب عليه النقر عليه لتأكيد حسابه.
الآن، تريد توسيع هذه الوظيفة بحيث يمكن للمستخدمين اختيار تأكيد حسابهم بعد تسجيل الدخول. تريد إضافة خيار يسمح لهم بالاختيار بين تأكيد حسابهم مباشرة أو تأجيل التأكيد. يمكن تحقيق هذا عن طريق إضافة زر أو زران يسمح للمستخدمين بالاختيار.
لتحقيق هذا، يمكنك إضافة حقل إلى نموذج الاشتراك يمثل خيار المستخدم لتأكيد حسابه. يمكن أن يكون هذا الحقل عبارة عن زر نصي (radio button) يتيح للمستخدم اختيار بين “تأكيد الحساب الآن” أو “تأكيد الحساب لاحقًا”. بعد ذلك، يمكنك تحديث سير العمل (workflow) في تطبيقك بناءً على اختيارات المستخدم.
لتنفيذ هذه الفكرة، يمكنك أولاً إضافة حقل جديد إلى نموذج الاشتراك في Devise. يمكنك تسميته، على سبيل المثال، confirmation_option
وتجعل نوعه بوليانيا (Boolean). ثم، يمكنك تحديث نموذج تسجيل المستخدم ليتضمن هذا الحقل:
ruby# app/models/user.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
before_create :confirm_email
def confirm_email
UserMailer.registration_confirmation(self).deliver
end
end
ثم، يجب عليك تحديث نموذج تسجيل المستخدم ليتضمن الحقل الجديد confirmation_option
:
ruby# app/views/devise/registrations/new.html.erb
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.radio_button :confirmation_option, true %> <%= f.label :confirmation_option, "Confirm my account now" %>
<%= f.radio_button :confirmation_option, false %> <%= f.label :confirmation_option, "Confirm my account later" %>
<% end %>
وأخيرًا، يمكنك تحديث وظيفة التأكيد في نموذج المستخدم لتأخذ بنية قرار المستخدم في الاعتبار:
ruby# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def create
super do |resource|
if resource.confirmation_option
resource.confirm
else
# Send email later or do nothing
end
end
end
end
بهذه الطريقة، عندما يسجل المستخدم، سيتم إرسال بريد إلكتروني إليه كالمعتاد. ولكن الآن، سيتم عرض خيارات “تأكيد الحساب الآن” و “تأكيد الحساب لاحقًا” للمستخدم. بناءً على اختياره، سيتم تأكيد حسابه مباشرة أو يتم تأجيل التأكيد بناءً على الإعدادات التي قمت بتحديدها.
المزيد من المعلومات
بما أنك ترغب في توفير خيار للمستخدمين لتأكيد حسابهم لاحقًا بعد التسجيل، يمكن أن تكون هذه الخاصية مفيدة بشكل خاص في بعض الحالات. على سبيل المثال، قد يكون لديهم الرغبة في استكمال المعلومات الشخصية أو في استعراض مزيد من المعلومات حول الموقع قبل تأكيد حسابهم. بالإضافة إلى ذلك، قد تكون هناك حالات حيث لا يكون لدى المستخدمين الوقت الكافي لتأكيد حساباتهم على الفور، ويرغبون في القيام بذلك في وقت لاحق.
باستخدام هذه الخاصية، يمكنك تحسين تجربة المستخدم وتمكينهم من التحكم في عملية التسجيل بشكل أفضل، مما يمكن أن يؤدي إلى زيادة عدد المستخدمين النشطين في التطبيق.
مع ذلك، يجب أن تأخذ في الاعتبار بعض النقاط الهامة عند تنفيذ هذه الخاصية. على سبيل المثال، يجب عليك توضيح للمستخدمين كيفية الوصول إلى عملية تأكيد الحساب في وقت لاحق في حال اختيارهم تأكيد الحساب لاحقًا. يمكنك القيام بذلك عن طريق تقديم وصلة واضحة في البريد الإلكتروني الذي يتلقونه عند التسجيل، ويمكن أن تشمل الوصلة تعليمات بسيطة حول كيفية تأكيد الحساب في وقت لاحق.
بالإضافة إلى ذلك، ينبغي عليك أيضًا توفير وسيلة للمستخدمين لتعديل خيار تأكيد الحساب إذا لزم الأمر. قد يرغب بعض المستخدمين في تغيير قرارهم بعد التسجيل، وبالتالي يجب أن تكون هناك وسيلة لتمكينهم من ذلك.
باستخدام هذه الإرشادات، يمكنك تنفيذ خاصية تأكيد الحساب الاختيارية بشكل فعال في تطبيقك باستخدام جهاز Devise، مما يعزز تجربة المستخدم ويمكنهم من التحكم في عملية التسجيل بشكل أفضل.