Active Record হল Ruby on Rails এর ORM (Object-Relational Mapping) প্যাটার্ন, যা ডেটাবেসের টেবিলগুলোকে Ruby ক্লাসে রূপান্তরিত করে। Active Record ডেটাবেসের সাথে যোগাযোগ করার জন্য বিভিন্ন মেথড প্রদান করে, যার মাধ্যমে ডেটা fetch (পুনরুদ্ধার) করা যায়।
Rails-এ ডেটা ফেচ করার জন্য Active Record বিভিন্ন মেথড সরবরাহ করে, যেগুলি ডেটাবেস থেকে রেকর্ড নিয়ে আসতে ব্যবহৃত হয়। এই মেথডগুলো ডেটাবেসের মধ্যে কার্যকরভাবে কোয়েরি চালাতে সাহায্য করে এবং ডেটাকে Ruby অবজেক্ট হিসেবে রিটার্ন করে, যাতে ডেভেলপাররা সহজে ডেটার সাথে কাজ করতে পারেন।
Active Record দিয়ে ডেটা Fetch করার মৌলিক পদ্ধতি
১. find মেথড
find মেথডটি ডেটাবেস থেকে একটি নির্দিষ্ট রেকর্ড খুঁজে আনে, যেখানে ID দ্বারা রেকর্ড শনাক্ত করা হয়।
product = Product.find(1)
এখানে, find(1) মেথডটি id = 1 এর সাথে সম্পর্কিত Product রেকর্ডটি ফিরে আনে। যদি কোনো রেকর্ড পাওয়া না যায়, তবে এটি একটি ActiveRecord::RecordNotFound এক্সেপশন তৈরি করবে।
২. find_by মেথড
find_by মেথডটি একটি নির্দিষ্ট শর্তের ভিত্তিতে ডেটা খুঁজে বের করে। এটি প্রাথমিকভাবে SQL WHERE শর্তের মতো কাজ করে।
product = Product.find_by(name: "Laptop")
এখানে, find_by(name: "Laptop") মেথডটি name কলামের মান "Laptop" এর সাথে মিলে এমন একটি রেকর্ড ফেরত দেয়। যদি রেকর্ড না পাওয়া যায়, তবে এটি nil রিটার্ন করবে।
৩. where মেথড
where মেথডটি একটি শর্ত দিয়ে এক বা একাধিক রেকর্ড খুঁজে বের করে। এটি SQL WHERE ক্লজের মত কাজ করে এবং একটি রিলেশন রিটার্ন করে, যাতে পরে আরো মেথড চেইন করা যেতে পারে।
products = Product.where(price: 1000)
এটি সমস্ত Product রেকর্ড ফিরিয়ে দেবে, যাদের price ১০০০। এটি একটি relation রিটার্ন করে, অর্থাৎ আরও মেথড যেমন first, last, each চেইন করা যেতে পারে।
products = Product.where(price: 1000).order(:name)
এখানে, রেকর্ডগুলো name অনুসারে সাজানো হবে।
৪. all মেথড
all মেথডটি টেবিলের সমস্ত রেকর্ড ফিরিয়ে আনে। এটি সাধারণত যখন আপনাকে টেবিলের সব রেকর্ড দরকার হয় তখন ব্যবহৃত হয়।
products = Product.all
এটি products টেবিলের সমস্ত রেকর্ড ফিরিয়ে দেয়। তবে, এটি একটি relation রিটার্ন করে, তাই চেইনিং এর মাধ্যমে আরও কাস্টমাইজ করা যেতে পারে।
products = Product.all.where(price: 1000)
এখানে, প্রথমে all মেথডটি সমস্ত রেকর্ড ফিরিয়ে দেবে এবং তারপর where মেথডটি price = 1000 শর্তে ডেটা ফিল্টার করবে।
৫. first এবং last মেথড
first এবং last মেথডগুলি ডেটাবেস থেকে প্রথম এবং শেষ রেকর্ডটি আনে।
first_product = Product.first
last_product = Product.last
এই মেথডগুলো ডেটাবেসের প্রথম এবং শেষ রেকর্ডটি রিটার্ন করে। আপনি আরো কাস্টম শর্ত ব্যবহার করতে পারেন, যেমন:
first_expensive_product = Product.where("price > ?", 1000).first
এটি ১০০০ এর বেশি মূল্যযুক্ত প্রথম Product রেকর্ড ফিরিয়ে দিবে।
৬. take মেথড
take মেথডটি ডেটাবেস থেকে নির্দিষ্ট সংখ্যক রেকর্ড নিয়ে আসে। এটি ডেটাবেসের যেকোনো রেকর্ড ফিরিয়ে আনতে পারে।
products = Product.take(3)
এটি টেবিল থেকে প্রথম ৩টি রেকর্ড ফিরিয়ে আনবে।
Complex Query Execution with Active Record
Rails Active Record আপনাকে জটিল কোয়েরি তৈরি করতে সহায়তা করে, যেমন AND, OR শর্ত, ইত্যাদি। আপনি where মেথডে একাধিক শর্ত যুক্ত করতে পারেন:
১. Multiple Conditions with where
products = Product.where("price > ? AND name LIKE ?", 1000, "%Laptop%")
এটি সমস্ত Product রেকর্ড রিটার্ন করবে যেখানে price > 1000 এবং name এ "Laptop" শব্দটি থাকবে।
২. Using or condition
products = Product.where(price: 1000).or(Product.where(name: "Laptop"))
এটি এমন সমস্ত Product রেকর্ড ফিরিয়ে দিবে যার price = 1000 অথবা name = "Laptop"।
SQL-like Operations in Active Record
Rails Active Record ডেটাবেস কোয়েরির জন্য SQL এর মতো অনেক ফিচার প্রদান করে, যেগুলি আপনাকে আরও নিয়ন্ত্রণ এবং জটিলতা ম্যানেজ করার সুযোগ দেয়।
১. group and having
products = Product.select("name, count(*) as product_count").group("name").having("count(*) > 2")
এটি name অনুযায়ী গ্রুপ করে এবং যেখানে প্রতিটি নামের জন্য ২টির বেশি রেকর্ড রয়েছে তা ফিল্টার করে দেখাবে।
২. joins
products = Product.joins(:category).where(categories: { name: "Electronics" })
এটি Product এবং Category মডেলের মধ্যে সম্পর্কের উপর ভিত্তি করে কোয়েরি করে, যেখানে category এর নাম "Electronics"।
Active Record Caching
Rails Active Record কোয়েরি রেজাল্টের জন্য কাচিং ব্যবহার করে, যার মানে হল যে একবার একটি কোয়েরি চালানোর পর একই কোয়েরি পুনরায় চালানো হলে ডেটাবেস থেকে নতুনভাবে ডেটা আনা হবে না, বরং কাচে সেভ করা ডেটা ব্যবহার করা হবে। এটি অ্যাপ্লিকেশনকে দ্রুততর করে তোলে।
সারমর্ম
Ruby on Rails-এ Active Record এর মাধ্যমে ডেটা ফেচ করা অত্যন্ত সহজ এবং কার্যকরী। find, find_by, where, all, first, last, take ইত্যাদি মেথডগুলো ডেটাবেস থেকে ডেটা রিটার্ন করতে ব্যবহৃত হয় এবং এগুলো আপনাকে ডেটাবেসের সাথে কার্যকরভাবে কাজ করার সুযোগ দেয়। Rails এর Active Record কোয়েরি মেথডগুলো SQL-এর মতো কাজ করে, তবে Ruby ভাষায় এটি করা হয়, যার ফলে ডেটাবেসের সাথে ইন্টারঅ্যাকশনে সময় এবং কোডের দক্ষতা বৃদ্ধি পায়।
Read more