PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

UUID có thể sắp xếp và ghi đè ActiveRecord ::Base

Trước hết, first last không đơn giản như bạn nghĩ:bạn đang hoàn toàn bỏ qua limit lập luận rằng cả hai phương pháp đó đều hỗ trợ.

Thứ hai, scope không chỉ là một cách ưa thích để thêm các phương thức lớp nhằm mục đích trả về các truy vấn. Phạm vi của bạn đang lạm dụng scope bởi vì chúng trả về các cá thể mô hình đơn lẻ chứ không phải là các truy vấn. Bạn không muốn sử dụng scope hoàn toàn, bạn chỉ đang cố gắng thay thế firstlast các phương thức lớp vậy tại sao bạn không ghi đè chúng? Tuy nhiên, bạn cần phải ghi đè chúng đúng cách và điều đó sẽ yêu cầu đọc và hiểu nguồn Rails để bạn bắt chước đúng những gì find_nth_with_limit làm. Bạn muốn ghi đè second , third , ... và phần còn lại của những phương pháp ngớ ngẩn đó khi bạn đang sử dụng nó.

Nếu bạn cảm thấy không ổn, hãy thay thế firstlast (một điều tốt là IMO), sau đó bạn có thể thêm một phạm vi mặc định để sắp xếp mọi thứ như mong muốn:

default_scope -> { order(:created_at) }

Tất nhiên, phạm vi mặc định đi kèm với tập hợp các vấn đề của riêng chúng và việc lén đưa mọi thứ vào ORDER BY như thế này có thể sẽ buộc bạn phải gọi reorder bất cứ lúc nào bạn thực sự muốn chỉ định ORDER BY; hãy nhớ rằng nhiều cuộc gọi đến order thêm điều kiện đặt hàng mới, chúng không thay thế điều kiện đã có.

Ngoài ra, nếu bạn đang sử dụng Rails6 +, bạn có thể sử dụng implicit_order_column của Markus giải pháp để tránh tất cả các vấn đề mà phạm vi mặc định có thể gây ra.

Tôi nghĩ rằng bạn đang đi về điều này hoàn toàn sai. Bất cứ lúc nào tôi thấy M.first Tôi cho rằng một cái gì đó đã bị lãng quên. Đặt hàng theo id khá là vô ích, vì vậy bạn nên luôn luôn chỉ định thủ công thứ tự bạn muốn trước khi sử dụng các phương pháp như firstlast .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sách “Hiệu suất cao PostgreSQL 9.0” đã ra mắt

  2. Làm cách nào để bạn tìm thấy kích thước đĩa của bảng Postgres / PostgreSQL và các chỉ mục của nó

  3. Tính toán điểm cách 50 dặm (Bắc, 45% NE, 45% SW)

  4. Khôi phục cơ sở dữ liệu PostgreSQL bằng java

  5. Postgres enum trong TypeORM