ActiveRecord রুবি অন রেলস (Ruby on Rails) ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ উপাদান, যা Object-Relational Mapping (ORM) এর মাধ্যমে ডেটাবেসের সাথে যোগাযোগ এবং ডেটার ম্যানিপুলেশন সহজ করে তোলে। ActiveRecord রুবি ক্লাসকে ডেটাবেস টেবিলের সাথে মানানসই করে, যা আপনাকে SQL কমান্ড লেখার পরিবর্তে রুবি কোড ব্যবহার করে ডেটাবেস অপারেশন পরিচালনা করতে সহায়তা করে।
ActiveRecord এর মূল উদ্দেশ্য
ActiveRecord এর মূল উদ্দেশ্য হল অবজেক্ট-অরিয়েন্টেড ডেটাবেস (Object-Oriented Database) ব্যবস্থাপনা, যেখানে আপনি রুবির অবজেক্টের মাধ্যমে ডেটাবেসের টেবিলের রেকর্ডের সাথে কাজ করেন। ActiveRecord আপনার রুবি ক্লাসকে ডেটাবেস টেবিলের সাথে ম্যাপ করে এবং ডেটাবেসের CRUD (Create, Read, Update, Delete) অপারেশনগুলো সম্পন্ন করতে সাহায্য করে।
ActiveRecord এর মূল বৈশিষ্ট্য
- Object-Relational Mapping (ORM):
- ActiveRecord ক্লাসকে ডেটাবেস টেবিলের সাথে ম্যাপ করে, যার মাধ্যমে আপনি রুবি কোডের মাধ্যমে ডেটাবেসের রেকর্ড পরিচালনা করতে পারেন।
- আপনি ডেটাবেস টেবিলের রেকর্ডকে রুবি অবজেক্ট হিসেবে দেখতে পাবেন এবং তাতে কাজ করতে পারবেন।
- CRUD Operations:
- ActiveRecord আপনাকে সহজে Create, Read, Update, এবং Delete অপারেশন করতে সহায়তা করে, যা ডেটাবেসের সাথে যোগাযোগের জন্য SQL লেখা ছাড়াই কার্যকর।
- Associations:
- ActiveRecord আপনাকে বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন করতে সহায়তা করে, যেমন has_many, belongs_to, has_one, has_and_belongs_to_many সম্পর্কগুলো।
- Validations:
- ActiveRecord ডেটার ইনপুটের পূর্বে যাচাই (validation) সম্পন্ন করতে সহায়তা করে, যেমন ন্যূনতম দৈর্ঘ্য, উপস্থিতি, সঠিকতা ইত্যাদি যাচাই।
- Callbacks:
- ActiveRecord বিভিন্ন ধরনের callbacks প্রদান করে, যেমন before_save, after_create, before_update ইত্যাদি, যা ডেটাবেস রেকর্ড তৈরি বা আপডেট করার আগে বা পরে কার্যকর হতে পারে।
ActiveRecord এর উদাহরণ
ধরা যাক, আমাদের একটি User টেবিল রয়েছে, যেখানে আমরা ব্যবহারকারীদের নাম, ইমেইল এবং বয়স সংরক্ষণ করি। ActiveRecord ব্যবহার করে আমরা এই টেবিলের সাথে ডেটা ম্যানিপুলেশন করতে পারি।
১. Model Definition (মডেল ডিফিনিশন)
ActiveRecord এর মাধ্যমে একটি ক্লাস তৈরি করে আমরা User টেবিলের সাথে যোগাযোগ করতে পারি। এই ক্লাসটি ActiveRecord::Base থেকে ইনহেরিট করবে, যা মডেল ক্লাসকে ডেটাবেসের সাথে সংযুক্ত করে।
class User < ActiveRecord::Base
# এখানে মডেল ভ্যালিডেশন, অ্যাসোসিয়েশন ইত্যাদি যুক্ত করা যায়
endএখানে, User ক্লাসটি ActiveRecord::Base থেকে ইনহেরিট করছে, যার ফলে আমরা User ক্লাসের ইনস্ট্যান্সের মাধ্যমে users টেবিলের রেকর্ড ম্যানিপুলেট করতে পারব।
২. Create (ডেটা তৈরি করা)
user = User.new(name: "John Doe", email: "john@example.com", age: 30)
user.saveএখানে, User.new ব্যবহার করে একটি নতুন User অবজেক্ট তৈরি করা হয়েছে এবং তারপরে save মেথড ব্যবহার করে তা ডেটাবেসে সেভ করা হয়েছে।
৩. Read (ডেটা পড়া)
user = User.find(1) # ID 1 সহ প্রথম রেকর্ড পাওয়া যাবে
puts user.name # আউটপুট: John Doeএখানে, User.find(1) ব্যবহার করে আমরা ID ১ সহ একটি ব্যবহারকারীকে খুঁজে পেয়েছি এবং তার নাম প্রদর্শন করেছি।
৪. Update (ডেটা আপডেট করা)
user = User.find(1)
user.update(name: "Jane Doe") # নাম পরিবর্তন করাএখানে, user.update ব্যবহার করে আমরা একটি ব্যবহারকারীর নাম পরিবর্তন করেছি এবং তা ডেটাবেসে সংরক্ষণ করেছি।
৫. Delete (ডেটা মুছে ফেলা)
user = User.find(1)
user.destroy # রেকর্ডটি ডেটাবেস থেকে মুছে ফেলা হবেএখানে, user.destroy ব্যবহার করে আমরা একটি ব্যবহারকারী রেকর্ড ডেটাবেস থেকে মুছে ফেলেছি।
ActiveRecord Associations (অ্যাসোসিয়েশন)
ActiveRecord এর অ্যাসোসিয়েশনগুলো ক্লাসগুলোর মধ্যে সম্পর্ক স্থাপন করতে ব্যবহৃত হয়। কিছু সাধারণ অ্যাসোসিয়েশন হলো:
has_many: এক ক্লাসের একাধিক রেকর্ডের সাথে সম্পর্ক।belongs_to: এক রেকর্ডের একটি সম্পর্ক অন্য রেকর্ডের সাথে।has_one: এক রেকর্ডের সাথে এক রেকর্ডের সম্পর্ক।has_and_belongs_to_many: একাধিক রেকর্ডের মধ্যে সম্পর্ক।
উদাহরণ:
class Author < ActiveRecord::Base
has_many :books # একজন লেখকের অনেক বই থাকতে পারে
end
class Book < ActiveRecord::Base
belongs_to :author # একটি বই একমাত্র লেখকের হতে পারে
endএখানে, Author এবং Book ক্লাসগুলোর মধ্যে সম্পর্ক তৈরি করা হয়েছে। একটি লেখকের অনেক বই থাকতে পারে, এবং একটি বই একটি লেখকের সাথে সম্পর্কিত।
Validations (ভ্যালিডেশন)
ActiveRecord মডেলগুলিতে validations যোগ করে আপনি ইনপুট ডেটার সঠিকতা নিশ্চিত করতে পারেন। কিছু সাধারণ ভ্যালিডেশন হলো:
validates_presence_of: একটি ফিল্ডের উপস্থিতি যাচাই করা।validates_uniqueness_of: একটি ফিল্ডের অদ্বিতীয়তা যাচাই করা।validates_numericality_of: একটি ফিল্ডের সংখ্যাগত মান যাচাই করা।
উদাহরণ:
class User < ActiveRecord::Base
validates_presence_of :name, :email # name এবং email ফিল্ড অবশ্যই পূর্ণ থাকতে হবে
validates_uniqueness_of :email # email ফিল্ডের মান অনন্য হতে হবে
endএখানে, validates_presence_of এবং validates_uniqueness_of ব্যবহার করে আমরা নিশ্চিত করেছি যে নাম এবং ইমেইল উপস্থিত থাকতে হবে এবং ইমেইলটি ইউনিক (অদ্বিতীয়) হতে হবে।
Callbacks (কলব্যাকস)
ActiveRecord কলব্যাকস আপনাকে নির্দিষ্ট সময় বা ডেটাবেস অপারেশনের আগে বা পরে কোড চালানোর সুযোগ দেয়। কিছু সাধারণ কলব্যাকস হলো:
before_save: রেকর্ডটি সেভ করার আগে কার্যকর হয়।after_create: রেকর্ডটি তৈরি হওয়ার পরে কার্যকর হয়।
উদাহরণ:
class User < ActiveRecord::Base
before_save :capitalize_name
def capitalize_name
self.name = self.name.capitalize
end
endএখানে, before_save কলব্যাক ব্যবহার করে আমরা রেকর্ড সেভ করার আগে ব্যবহারকারীর নামের প্রথম অক্ষরটি বড় হাতের অক্ষরে পরিবর্তন করেছি।
সারসংক্ষেপ
- ActiveRecord রুবি অন রেলসের ORM ফিচার যা ডেটাবেসের সাথে কোডের যোগাযোগ সরল করে তোলে।
- এটি CRUD (Create, Read, Update, Delete) অপারেশনগুলো সহজভাবে করার সুযোগ দেয়।
- Associations, Validations, এবং Callbacks এর মাধ্যমে ডেটা সম্পর্কিত কাজ সহজ এবং কার্যকরী হয়।
- method_missing এবং dynamic methods এর মাধ্যমে ডেটা এবং মেথড ম্যানিপুলেশন আরও নমনীয় হয়।
ActiveRecord রুবি অন রেলসের শক্তিশালী ORM সিস্টেম, যা ডেটাবেসের সাথে মিথস্ক্রিয়া এবং কার্যকরী কোড লেখার প্রক্রিয়াকে অনেক সহজ এবং দ্রুত করে তোলে।
Read more