0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hiểu rõ Class Method, Instance Method và Scope trong Rails: So sánh và Ứng dụng

Đăng vào 3 tuần trước

• 2 phút đọc

Giới thiệu

Trong lập trình với Ruby on Rails, chúng ta thường gặp các khái niệm như class method, instance method và scope. Đây là những phần quan trọng trong việc xử lý dữ liệu và logic ứng dụng. Bài viết này sẽ giúp bạn hiểu rõ hơn về từng khái niệm và sự khác biệt giữa chúng.

Class Method

Định nghĩa

Class method là các phương thức thuộc về một lớp và được gọi trực tiếp thông qua tên lớp. Chúng hỗ trợ các hoạt động liên quan đến toàn bộ lớp hoặc tương tác với các đối tượng mà không cần thông qua một đối tượng cụ thể.

Ví dụ

ruby Copy
class User
  def self.find_by_email(email)
    # Class method để tìm người dùng theo email
  end
end

User.find_by_email("example@example.com")

Instance Method

Định nghĩa

Instance method là các phương thức mang tính chất riêng biệt, gắn liền với mỗi đối tượng cụ thể của lớp. Chúng cho phép thực hiện các tác vụ cụ thể cho từng đối tượng, như việc lấy hoặc thiết lập giá trị cho các thuộc tính.

Ví dụ

ruby Copy
class User
  def full_name
    "#{first_name} #{last_name}"
  end
end

user = User.new(first_name: "John", last_name: "Doe")
user.full_name

Scope

Định nghĩa

Scope là một phương thức trong ActiveRecord, thường dùng cho các truy vấn cơ sở dữ liệu. Scope cho phép bạn đặt ra một tập hợp các điều kiện tìm kiếm có thể tái sử dụng nhiều lần trong ứng dụng.

Ví dụ

ruby Copy
class User < ApplicationRecord
  scope :active, -> { where(active: true) }
end

active_users = User.active

So sánh giữa Class Method, Instance Method và Scope

  • Class Method vs Instance Method: Mặc dù cả class method và instance method đều thuộc về một lớp, nhưng chúng có mục đích và cách sử dụng khác nhau. Class method phục vụ cho các tác vụ toàn cục trong khi instance method tập trung vào các đối tượng cụ thể.

  • Scope: Scope có thể được xem là một dạng của class method, nhưng thường được sử dụng để đóng gói và tái sử dụng các điều kiện tìm kiếm, giúp mã nguồn trở nên gọn gàng và dễ hiểu hơn.

  • Chức năng: Class method có tính linh hoạt cao, cho phép thực hiện nhiều loại hành động trong khi scope thường chỉ chứa các điều kiện tìm kiếm để tối ưu hóa truy vấn cơ sở dữ liệu.

Kết luận

Mỗi khái niệm trong Ruby on Rails — class method, instance method và scope — đều đóng vai trò quan trọng trong việc phát triển ứng dụng. Hiểu rõ cách thức hoạt động của chúng sẽ giúp bạn xây dựng ứng dụng Rails một cách hiệu quả và linh hoạt hơn.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào