Form Validation হল একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ব্যবহারকারীর ইনপুট ডেটা যাচাই করে সঠিকতা নিশ্চিত করে। Ruby on Rails-এ Active Record Validations ব্যবহার করে ফর্মের ডেটা যাচাই করা যায়। এটি নিশ্চিত করে যে ডেটাবেসে সঠিক তথ্য সংরক্ষিত হচ্ছে। যখন একটি ব্যবহারকারী ফর্মে কোন ভুল ইনপুট দেয়, তখন Custom Error Messages ব্যবহার করে সে ভুলগুলোকে ব্যবহারকারী-friendlyভাবে প্রদর্শন করা যায়।
Form Validation কী?
Form Validation হল এমন একটি প্রক্রিয়া, যেখানে ব্যবহারকারীর ইনপুট ডেটা যাচাই করা হয় যাতে তা নির্ধারিত শর্ত বা নিয়ম অনুযায়ী সঠিক হয়। Ruby on Rails-এ Active Record Validations মডেল ক্লাসে ব্যবহার করা হয়, যা মডেলের ইনপুট ডেটা যাচাই করে।
ফর্ম ভ্যালিডেশন ব্যবহার করা হয়:
- সঠিক ফর্ম্যাটে ডেটা গ্রহণ করতে (যেমন, ইমেইল ঠিক আছে কি না)।
- ফর্মের কোন ক্ষেত্র ফাঁকা না থাকে।
- ডেটা নির্ধারিত সীমায় থাকে (যেমন, বয়স ১৮ বছরের বেশি কিনা)।
Rails-এ Form Validation ব্যবহার
Rails-এ Active Record ভ্যালিডেশন ব্যবহার করে সহজেই ফর্মের ইনপুট যাচাই করা যায়। Rails কিছু বিল্ট-ইন ভ্যালিডেশন প্রদান করে, যেমন presence, uniqueness, length, numericality ইত্যাদি।
উদাহরণ:
ধরা যাক, আমাদের একটি User মডেল আছে, যেখানে name, email, এবং age ফিল্ড রয়েছে।
class User < ApplicationRecord
# name ফিল্ডের জন্য presence ভ্যালিডেশন
validates :name, presence: true
# email ফিল্ডের জন্য uniqueness এবং presence ভ্যালিডেশন
validates :email, presence: true, uniqueness: true
# age ফিল্ডের জন্য numericality ভ্যালিডেশন
validates :age, numericality: { greater_than: 18 }
end
এই কোডটি:
- name: ফাঁকা থাকতে পারবে না।
- email: এটি অবশ্যই অনন্য হতে হবে এবং ফাঁকা থাকতে পারবে না।
- age: ১৮ বছরের বেশি হতে হবে।
সাধারণ Validation Types
Rails এ অনেক ধরনের ভ্যালিডেশন রয়েছে, যা বিভিন্ন ইনপুট শর্ত যাচাই করতে ব্যবহৃত হয়:
Presence Validation: ইনপুট ফিল্ডটি খালি থাকতে পারবে না।
validates :name, presence: trueUniqueness Validation: ইনপুটটি অবশ্যই ইউনিক হতে হবে।
validates :email, uniqueness: trueLength Validation: ইনপুটটির দৈর্ঘ্য নির্দিষ্ট সীমায় থাকতে হবে।
validates :name, length: { minimum: 3 }Numericality Validation: ইনপুটটি অবশ্যই একটি সংখ্যা হতে হবে এবং নির্দিষ্ট শর্ত পূরণ করতে হবে।
validates :age, numericality: { greater_than: 18 }Format Validation: ইনপুটটি নির্দিষ্ট একটি ফরম্যাটের মধ্যে থাকতে হবে, যেমন ইমেইল বা ফোন নম্বর।
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }Inclusion/Exclusion Validation: ইনপুটটি নির্দিষ্ট একটি তালিকার মধ্যে থাকতে হবে।
validates :status, inclusion: { in: ['active', 'inactive'] }
Custom Error Messages
Rails-এ ডিফল্ট ভ্যালিডেশন মেসেজগুলো সাধারণত ইংরেজিতে থাকে, তবে আপনি Custom Error Messages ব্যবহার করে এগুলো কাস্টমাইজ করতে পারেন, যা ব্যবহারকারীর জন্য আরো বোধগম্য এবং উপকারী হবে।
Custom Error Messages কীভাবে যুক্ত করবেন
Rails এ ভ্যালিডেশন মেসেজ কাস্টমাইজ করা সহজ। আপনি কেবলমাত্র ভ্যালিডেশনের মধ্যে message অপশন ব্যবহার করতে পারেন।
উদাহরণ:
class User < ApplicationRecord
validates :name, presence: { message: "নামটি অবশ্যই প্রদান করতে হবে" }
validates :email, uniqueness: { message: "এই ইমেইলটি ইতিমধ্যে ব্যবহার করা হয়েছে" }
validates :age, numericality: { greater_than: 18, message: "আপনার বয়স ১৮ বছরের বেশি হতে হবে" }
end
এখানে, প্রত্যেকটি ভ্যালিডেশন একটি কাস্টম মেসেজ প্রদর্শন করবে।
Validation Errors ফর্মে প্রদর্শন করা
Rails-এ আপনি ফর্মের মধ্যে ভ্যালিডেশন এররগুলো form_with বা form_for হেল্পার ব্যবহার করে খুব সহজেই প্রদর্শন করতে পারেন। এই এররগুলো মডেল অবজেক্টের errors অ্যাট্রিবিউটের মাধ্যমে পাওয়া যায়।
উদাহরণ:
<%= form_with model: @user do |form| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div>
<%= form.label :name %>
<%= form.text_field :name %>
</div>
<div>
<%= form.label :email %>
<%= form.text_field :email %>
</div>
<div>
<%= form.label :age %>
<%= form.number_field :age %>
</div>
<div>
<%= form.submit %>
</div>
<% end %>
এখানে:
@user.errors.any?চেক করে যদি কোন এরর থাকে।@user.errors.full_messagesএর মাধ্যমে ভ্যালিডেশন এরর মেসেজগুলোর তালিকা প্রদর্শন করা হয়।
Conditional Validation
কখনও কখনও আপনি চাচ্ছেন, কিছু শর্ত পূর্ণ হলে ফিল্ডটি ভ্যালিডেট হবে। তখন আপনি conditional validation ব্যবহার করতে পারেন।
উদাহরণ:
ধরা যাক, আপনি চান যে শুধুমাত্র age ফিল্ডটি তখনই যাচাই করা হোক যখন status "active" হবে।
validates :age, numericality: { greater_than: 18 }, if: :active?
def active?
status == "active"
end
এখানে, শুধুমাত্র যখন status "active" থাকবে, তখনই age ফিল্ডটি যাচাই হবে।
সারমর্ম
Form Validation একটি গুরুত্বপূর্ণ অংশ Rails অ্যাপ্লিকেশনে, যা ফর্মে ব্যবহারকারীর ইনপুট যাচাই করে সঠিকতা নিশ্চিত করে। Active Record Validations Rails এর মডেল ক্লাসে সহজে ব্যবহার করা যায় এবং এতে অনেক ধরনের ভ্যালিডেশন যেমন presence, uniqueness, length, numericality, format ইত্যাদি অন্তর্ভুক্ত রয়েছে। Custom Error Messages ব্যবহারকারীর জন্য আরো বোধগম্য এবং উপকারী হতে পারে। Validation errors ফর্মের মধ্যে সুন্দরভাবে প্রদর্শন করা যায় এবং আপনি চাইলে কন্ডিশনাল ভ্যালিডেশনও ব্যবহার করতে পারেন।
Read more