Ruby on Rails-এ Validations একটি গুরুত্বপূর্ণ অংশ যা ডেটার ইনপুটকে সঠিকভাবে যাচাই করতে সাহায্য করে। এটি ব্যবহারকারীর ডেটা নিরাপত্তা এবং ডেটাবেসের সঠিকতা নিশ্চিত করতে সহায়তা করে। Rails এ Built-in Validation Methods এবং Custom Validations দুটো ব্যবহৃত হয়।
Built-in Validation Methods
Ruby on Rails এ কিছু সাধারণ built-in validation methods আছে যা ডেটার সঠিকতা এবং পূর্ণতা যাচাই করতে ব্যবহৃত হয়। এগুলো মডেল ক্লাসে ব্যবহার করা হয় এবং সাধারণত ফর্ম সাবমিটের সময় প্রয়োগ হয়।
১. presence
presence ভ্যালিডেশন নিশ্চিত করে যে একটি ফিল্ড খালি না থাকে, অর্থাৎ এটি nil বা empty না হতে পারে।
validates :name, presence: true
এটি name ফিল্ডটি খালি থাকলে একটি ত্রুটি তৈরি করবে।
২. uniqueness
uniqueness ভ্যালিডেশন নিশ্চিত করে যে একটি ফিল্ডের মান ডেটাবেসে অনন্য (unique) হতে হবে।
validates :email, uniqueness: true
এটি নিশ্চিত করবে যে email ফিল্ডের মান ডেটাবেসে একাধিকবার আসবে না।
৩. length
length ভ্যালিডেশন একটি ফিল্ডের দৈর্ঘ্য (length) চেক করে। এর মাধ্যমে আপনি মিনিমাম বা ম্যাক্সিমাম দৈর্ঘ্য নির্ধারণ করতে পারেন।
validates :password, length: { minimum: 8 }
এটি নিশ্চিত করবে যে password ফিল্ডটির দৈর্ঘ্য কমপক্ষে ৮ ক্যারেক্টার হবে।
৪. numericality
numericality ভ্যালিডেশন নিশ্চিত করে যে একটি ফিল্ডের মান একটি সংখ্যা (integer বা float) হতে হবে।
validates :age, numericality: { only_integer: true }
এটি নিশ্চিত করবে যে age ফিল্ডের মান একটি পূর্ণসংখ্যা (integer) হবে।
৫. format
format ভ্যালিডেশন একটি নির্দিষ্ট রেগুলার এক্সপ্রেশন (regular expression) অনুযায়ী ফিল্ডের মান যাচাই করে।
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }
এটি নিশ্চিত করবে যে email ফিল্ডের মান একটি সঠিক ইমেইল ফরম্যাটে থাকবে।
৬. inclusion এবং exclusion
inclusion এবং exclusion ভ্যালিডেশন নির্দিষ্ট মানের মধ্যে একটি মান রয়েছে কিনা তা যাচাই করে।
validates :status, inclusion: { in: ['active', 'inactive'] }
validates :role, exclusion: { in: ['admin'] }
এটি status ফিল্ডে active বা inactive মান ছাড়া অন্য কোনো মান থাকা যাবে না, এবং role ফিল্ডে admin ছাড়া অন্য কিছু থাকতে পারবে না।
৭. acceptance
acceptance ভ্যালিডেশন নিশ্চিত করে যে ব্যবহারকারী কোনও চুক্তি বা শর্তাদি মেনে নিয়েছে।
validates :terms_of_service, acceptance: true
এটি নিশ্চিত করবে যে ব্যবহারকারী terms_of_service চেকবক্সটি টিক দিয়েছে।
৮. associated
associated ভ্যালিডেশন একটি অ্যাসোসিয়েটেড অবজেক্টের বৈধতা যাচাই করে।
validates :profile, associated: true
এটি নিশ্চিত করবে যে profile অবজেক্টটি বৈধ কিনা।
Custom Validations
কখনও কখনও ডেভেলপারদের বিশেষ ধরনের ভ্যালিডেশন প্রয়োজন হয় যা Rails এর built-in ভ্যালিডেশনগুলোতে নেই। এই ক্ষেত্রে, custom validations ব্যবহার করা হয়।
Custom Validation তৈরি করা
Rails এ custom validation তৈরি করতে, আপনি validate মেথড ব্যবহার করতে পারেন, যেখানে আপনার নিজস্ব লজিক থাকবে। এটি errors.add মেথডের মাধ্যমে কাস্টম ত্রুটি বার্তা যুক্ত করতে সাহায্য করে।
class User < ApplicationRecord
validate :age_must_be_at_least_18
private
def age_must_be_at_least_18
if age < 18
errors.add(:age, "must be at least 18")
end
end
end
এখানে, age_must_be_at_least_18 একটি কাস্টম ভ্যালিডেশন মেথড যা নিশ্চিত করে যে ব্যবহারকারীর বয়স কমপক্ষে ১৮ বছর হবে।
Custom Validation মেসেজ প্রদান
আপনি কাস্টম ভ্যালিডেশনে নির্দিষ্ট ত্রুটি বার্তা ব্যবহার করতে পারেন:
validate :username_is_unique_and_valid
def username_is_unique_and_valid
if username.blank?
errors.add(:username, "cannot be blank")
elsif User.exists?(username: username)
errors.add(:username, "has already been taken")
end
end
এটি নিশ্চিত করবে যে username ফিল্ডটি খালি নয় এবং ডেটাবেসে এর কোনো কপি নেই।
Conditional Validations
কিছু ক্ষেত্রে ভ্যালিডেশন শর্তসাপেক্ষভাবে প্রয়োগ করা যেতে পারে। যেমন, একটি নির্দিষ্ট ভ্যালিডেশন শুধুমাত্র কোনো নির্দিষ্ট শর্তে কার্যকর হবে।
validates :email, presence: true, if: :email_required?
private
def email_required?
self.role == 'user'
end
এটি role যদি user হয়, তখনই email ফিল্ডে ভ্যালিডেশন প্রয়োগ করবে।
সারমর্ম
Ruby on Rails-এ built-in validation methods ব্যবহার করে আপনি সহজেই ডেটার ইনপুট যাচাই করতে পারেন, যেমন presence, uniqueness, length, numericality ইত্যাদি। তবে, কিছু সময় custom validations ব্যবহারের প্রয়োজন হয় যেখানে আপনি নিজের লজিক ব্যবহার করে ডেটার সঠিকতা যাচাই করতে পারেন। Rails-এর validates এবং validate মেথড ব্যবহার করে আপনি সহজেই কাস্টম এবং বিল্ট-ইন ভ্যালিডেশন উভয়ই প্রয়োগ করতে পারবেন, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের ডেটার নির্ভুলতা এবং নিরাপত্তা নিশ্চিত করতে পারবেন।
Read more