Active Record یک جم برای ارتباط سازمان دیده با دیتابیس بوده که توسط Rails تنظیم و فراخوانی میشود. این یک آشنایی با Active Record است و دانش SQL و Rails تا حدئ توصیه میشود هرچند نیازی به این دانش برای درک این مقاله نیست.
برای استفاده ابتدایی از ActiveRecord باید سه بخش از آن را بشناسیم.
- Migration & Schema System (که به ظاهر دیتابیس شکل میدهد)
- CRUD Operations (که وظیفه ساختن، پیدا کردن، حذف کردن و تغییر دادن یک تیکه اطلاعات را به عهده دارد)
- Query Interface (که وظیفه پیدا کردن و رابطه برقرار کردن بین اطلاعات را به عهده دارد)
تنظیمات اولیه
میتوانید ActiveRecord را به دیتابیسهایی مانند PostgreSQL, MySQL و SQLite متصل کنید. در این مقاله ما SQLite را انتخاب میکنیم به دلیل سادگی.
درون Gemfile مینویسیم
gem "sqlite3"
درون config/database.yml مینویسیم
development:
adapter: sqlite3
database: db/db_dev_db.sqlite3
pool: 5
timeout: 5000
بعد اجرا میکنیم
rake db:setup
Migration & Schema System
هر دیتابیس ساختار اطلاعات قابل ذخیره را توسط قواعد خشک و دقیق به نام اسکیما تعیین میکند. به طور مثال تعیین میکنیم که جدولی از کاربران داریم و هر کاربر یک email از گونه String دارد.
Active Record Migrations به ما این اجازه رو میدن که Schema اطلاعاتمون رو کم کم و طی زمان بسازیم. به این معنی که در آینده میتونیم این Schema را تغییر بدیم.
برای شروع جدول کاربران را میسازیم. اول باید یک Migration جدید بسازیم
rails generate migration create_users_table
به این ترتیب که rails generate migration دستور بوده و باقی نام Migration است.
درون db/migrations/0000_create_users_table.rb خواهیم داشت:
class CreateUsersTable < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :name
t.timestamps
end
end
end
که دستور create_table جدولی به نامه users میسازد و دستور t.string یک field به نامه email خواهد سخت.
حالا Migration را اجرا میکنیم.
rake db:migrate
هماکنون دیتابیس ما ظاهری که Active Record انتظار دارد را دنبال میکند. پس شروع میکنیم به ساخت یک Active Record Model که با این جدول کاربران صحبت کند.
درون /app/models/user.rb مینویسیم.
class User < ActiveRecord::Base
end
و وارد کنسول Rails میشویم تا با Model جدیدمان کمی کار کنیم.
bundle exec rails console -s
درون کنسول مینویسیم:
User.create first_name: "pooyan", last_name: "khosravi", email: "pekhee at gmail dot com"
این دستور یک کاربر برای ما سخته و شماره کاربری آن را برمیگرداند. میتوانیم از دیتابیس آخرین کاربر را بگیریم.
User.last