Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Thành Thạo Gem Sequel Ruby: Hướng Dẫn Thực Hành Với Ví Dụ Code

Sequel Là Gì?

Sequel là gem cho phép truy cập database, không cần Rails. Kết nối DB theo nhiều cách. Chủ yếu hai: Gửi raw SQL command, hoặc dùng ORM. Ví dụ raw SQL & MySQL:

 require 'mysql2'
client = Mysql2::Client.new(host: "localhost")
results = client.query("SELECT * FROM users WHERE age > 21") 

Kết quả? Mảng hash với data. Bây giờ: Muốn làm việc data cách OOP, cần biến kết quả thành object. Đó là phần lớn ORM làm. ORM là gì? Object-Relational-Mapping. Sequel, tên theo cách phát âm SQL (ngôn ngữ query DB), là ORM. Khám phá cách dùng!

Ví Dụ Sequel: Kết Nối Database

Bước đầu dùng Sequel là kết nối DB. Ví dụ:

 require 'sequel'
DB = Sequel.sqlite('/tmp/testing.db') 

Tạo object Sequel::Database & gán cho DB. Dùng SQLite3. Nhưng dùng khác: Sequel.postgres, Sequel.mysql2, Sequel.oracle. Tiếp theo? Cần tạo table lưu data. Cách tạo:

 unless DB.table_exists?(:fruits)
  DB.create_table :fruits do
    primary_key :id
    column :name, String
    column :amount, Integer
  end
end 

Có hệ thống migration. Nhưng tùy chọn. Sẵn sàng thêm data & query DB!

Cách Dùng Sequel Datasets

Cần object dataset tương tác với table cụ thể trên DB. Cách lấy:

 table = DB[:fruits] # Sequel::SQLite::Dataset 

Tuyệt! Bây giờ thêm record với insert. Như sau:

 table.insert(name: "Orange", amount: 10)
table.insert(name: "Apple", amount: 2)
table.insert(name: "Banana", amount: 7) 

Đếm: table.count # 3. Lấy tất cả entry:

 table.all
# [
#   { id: 1, name: "Orange", amount: 10 },
#   { id: 2, name: "Apple", amount: 2 },
#   { id: 3, name: "Banana", amount: 7 }
# ] 

Trông như mảng hash. Đúng vậy. Đó chính xác nó là. Sequel cho query DB không cần model. Nhưng có thể dùng model. Cách đây...

Cách Dùng Model Trong Sequel

Model Sequel giống ActiveRecord model. Ví dụ:

 class Fruit < Sequel::Model
end 

Model hành xử như dataset, nhưng wrap kết quả trong class model. Xem:

 Fruit.first # Fruit @values={:id=>1, :name=>"Orange", :amount=>10} 

Dùng cùng method Sequel::Dataset. Không có "ma thuật" ở đây. Ví dụ thêm:

 Fruit.map(:name) # ["Orange", "Apple", "Banana"]
Fruit.where(name: "Apple").or(amount: 10).map(:name) # ["Orange", "Apple"]
Fruit.first[:amount] # 10 

Rất hay!

Sequel vs ActiveRecord

Bây giờ biết Sequel awesome, bạn tự hỏi so với ActiveRecord thế nào. ActiveRecord là ORM mặc định Rails. Rails rất thích convention. Tôi không nghĩ worth thử replace ActiveRecord bằng Sequel trong Rails app. Tuy nhiên. Nếu dùng framework khác, như Sinatra, Sequel là lựa chọn tuyệt vời!

Tóm Tắt

Bạn đã học làm việc database Ruby dùng ORM, trường hợp này gem Sequel Ruby. Bây giờ lượt bạn thử & vui vẻ! Cảm ơn bạn đã đọc.