+2

So sánh class method, instance method và scope trong rails

Trong Rails, các khái niệm về class method, instance method và scope đều liên quan đến việc xử lý dữ liệu và logic trong ứng dụng.

Class Method:

  • Định nghĩa: Class method là các phương thức của lớp (class), được gọi trực tiếp từ tên lớp
  • Sử dụng cho các hoạt động liên quan đến dữ liệu toàn bộ lớp hoặc tương tác với các đối tượng của lớp mà không cần thông qua một đối tượng cụ thể.
  • VD:
class User
  def self.find_by_email(email)
    # Class method để tìm người dùng dựa trên email
  end
end

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

Instance Method:

  • Định nghĩa: Instance method là các phương thức được gắn với mỗi đối tượng cụ thể của lớp.
  • Sử dụng để thực hiện các hoạt động cụ thể trên mỗi đối tượng của lớp, chẳng hạn như lấy hoặc thiết lập các thuộc tính của đối tượng.
  • VD:
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 của ActiveRecord và áp dụng cho các truy vấn cơ sở dữ liệu.
  • Sử dụng để xác định một tập hợp các điều kiện tìm kiếm mà có thể được sử dụng nhiều lần trong ứng dụng của bạn.
  • VD:
class User < ApplicationRecord
  scope :active, -> { where(active: true) }
end

active_users = User.active

So sánh:

  • Class method và Instance method đều là phương thức của một lớp, nhưng chúng có mục đích và cách sử dụng khác nhau.
  • Scope cũng có thể được coi là một loại class method, nhưng thường được sử dụng để đóng gói các điều kiện tìm kiếm cụ thể.
  • Class method có thể thực hiện bất kỳ hành động nào, trong khi scope chỉ nên chứa các điều kiện tìm kiếm.

Tóm lại, mỗi khái niệm trong Rails có vai trò và cách sử dụng riêng biệt, nhưng đều giúp cho việc xây dựng ứng dụng Rails linh hoạt và hiệu quả.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí