Ruby on Rails এ Validation হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটাবেসে ডেটা প্রবেশ করার আগে বিভিন্ন শর্ত যাচাই করে। এটি নিশ্চিত করে যে, ইউজার থেকে প্রাপ্ত ডেটা অ্যাপ্লিকেশন অনুযায়ী সঠিক এবং সুরক্ষিত। যখন ডেটা কোনো ভ্যালিডেশন চেক পাস করে না, তখন Validation Errors তৈরি হয়। এই Errors গুলি ইউজারকে জানানোর জন্য বিশেষ পদ্ধতি এবং কৌশল রয়েছে। এদিকে, Error Handling ব্যবস্থার মাধ্যমে অ্যাপ্লিকেশনটি runtime errors এবং unexpected situations সঠিকভাবে ম্যানেজ করতে পারে।
Validation Errors
Rails মডেলগুলিতে validations ব্যবহার করে ডেটা ইনপুট যাচাই করা হয়। এটি বিভিন্ন শর্তে ডেটা যাচাই করে, যেমন ফিল্ডের প্রয়োজনীয়তা, ফরম্যাটের সঠিকতা, সর্বনিম্ন এবং সর্বোচ্চ দৈর্ঘ্য ইত্যাদি।
Validation ব্যবহার করার উদাহরণ:
Rails মডেলে validates মেথড ব্যবহার করে বিভিন্ন validation অ্যাপ্লাই করা হয়। উদাহরণস্বরূপ:
class User < ApplicationRecord
validates :name, presence: true, length: { minimum: 3 }
validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP }
end
এখানে:
validates :name, presence: true: এটি নিশ্চিত করে যে নাম ফিল্ডটি খালি থাকবে না।validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }: এটি নিশ্চিত করে যে ইমেলটি একটি বৈধ ইমেল ফরম্যাটে থাকবে।
Validation Types
Rails এ কিছু সাধারণ validation types রয়েছে, যেগুলো ব্যবহার করে বিভিন্ন ধরণের শর্ত যাচাই করা যায়:
Presence Validation:
validates :name, presence: trueএটি নিশ্চিত করে যে ফিল্ডটি খালি থাকবে না।
Length Validation:
validates :password, length: { minimum: 6 }এটি নিশ্চিত করে যে পাসওয়ার্ডের দৈর্ঘ্য অন্তত ৬ অক্ষর হবে।
Uniqueness Validation:
validates :email, uniqueness: trueএটি নিশ্চিত করে যে ইমেলটি ডেটাবেসে অনন্য (unique) থাকবে।
Format Validation:
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }এটি নিশ্চিত করে যে ইমেলটি একটি বৈধ ফরম্যাটে হবে।
Numericality Validation:
validates :age, numericality: { greater_than_or_equal_to: 18 }এটি নিশ্চিত করে যে বয়স একটি সংখ্যা এবং ১৮ এর বেশি।
Error Handling in Rails
Error Handling হল Rails অ্যাপ্লিকেশনে যেকোনো ত্রুটি বা সমস্যা সঠিকভাবে শনাক্ত ও মোকাবেলা করার পদ্ধতি। এটি ইউজারকে উপযুক্ত ত্রুটি বার্তা প্রদান করতে সহায়তা করে এবং অ্যাপ্লিকেশন চলতে বাধা দেয় না।
ActiveRecord Validation Errors
Rails মডেলে ActiveRecord ভিত্তিক validation errors স্বয়ংক্রিয়ভাবে সঞ্চিত থাকে। যদি কোনো ভ্যালিডেশন ব্যর্থ হয়, তাহলে ঐ মডেলের errors অবজেক্টে ত্রুটির বার্তা থাকে। আপনি এই বার্তাগুলোকে View-এ প্রদর্শন করতে পারেন।
user = User.new(name: "", email: "invalid_email")
if user.save
# সফলভাবে সেভ হয়েছে
else
puts user.errors.full_messages
end
এখানে user.errors.full_messages টেনে আনা হবে এবং ইউজারকে সঠিক ত্রুটি বার্তা দেখানো হবে।
Validation Errors ভিউতে প্রদর্শন করা
Rails আপনাকে ভ্যালিডেশন ত্রুটিগুলি ভিউ-এ দেখানোর জন্য সহজ উপায় প্রদান করে। উদাহরণস্বরূপ, যদি একটি ফর্মে ভ্যালিডেশন ত্রুটি ঘটে, আপনি ফর্মের উপরে ত্রুটি বার্তা প্রদর্শন করতে পারেন।
<% 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 %>
এটি ইউজারের মডেল থেকে সমস্ত ত্রুটির বার্তা নিয়ে তা একটি সুশৃঙ্খল তালিকায় প্রদর্শন করবে।
ActiveRecord Callback for Error Handling
কখনও কখনও আপনাকে একটি callback ব্যবহার করতে হতে পারে যাতে আপনি ডেটা সেভ হওয়ার আগে বা পরে নির্দিষ্ট কোনো কাজ করতে পারেন। উদাহরণস্বরূপ, আপনি যদি চেক করতে চান যে ডেটা সেভ হওয়ার আগে ভ্যালিডেশন সফল হয়েছে কিনা, তবে আপনি before_save callback ব্যবহার করতে পারেন।
class User < ApplicationRecord
before_save :check_for_valid_email
private
def check_for_valid_email
if !email.match?(URI::MailTo::EMAIL_REGEXP)
errors.add(:email, "is not valid")
throw(:abort) # Prevents the save action
end
end
end
এখানে:
before_saveএকটি callback যা সেভ হওয়ার আগে চলবে।- যদি ইমেল ভ্যালিড না হয়, তবে একটি ত্রুটি বার্তা যোগ হবে এবং
throw(:abort)কল করার মাধ্যমে সেভ প্রক্রিয়া বন্ধ হয়ে যাবে।
Custom Error Handling
আপনি Rails অ্যাপ্লিকেশনে কাস্টম error pages তৈরি করতে পারেন যা বিভিন্ন ধরনের ত্রুটি, যেমন 404 বা 500, হ্যান্ডেল করবে।
উদাহরণ: কাস্টম 404 পেজ তৈরি করা
routes.rb ফাইলে:
match '/404', to: 'errors#not_found', via: :allerrors_controller.rb:
class ErrorsController < ApplicationController def not_found render status: 404 end endviews/errors/not_found.html.erb:
<h1>404 Not Found</h1> <p>The page you were looking for doesn't exist.</p>
এটি ব্যবহারকারীদের জন্য একটি কাস্টম 404 পেজ দেখাবে যখন তারা কোনো অনুপস্থিত পেজ অ্যাক্সেস করার চেষ্টা করবে।
সারমর্ম
Validation এবং Error Handling Rails অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ। Validation ব্যবহারের মাধ্যমে ডেটা ইনপুট যাচাই করা হয়, যা নিশ্চিত করে যে ডেটা সঠিক এবং উপযুক্ত। Validation Errors তখন ঘটে যখন ইনপুট ডেটা মডেল দ্বারা নির্ধারিত শর্ত পূরণ করতে ব্যর্থ হয়। অন্যদিকে, Error Handling ব্যবস্থার মাধ্যমে আপনি অ্যাপ্লিকেশনটির ত্রুটি সঠিকভাবে মোকাবেলা করতে পারেন এবং ইউজারকে সঠিক তথ্য প্রদান করতে পারেন, যাতে তাদের অ্যাপ্লিকেশন ব্যবহারে কোনো সমস্যা না হয়।
Read more