Sự khác nhau giữa find và find_by
Bài đăng này đã không được cập nhật trong 8 năm
Là một người mới làm quen và tìm hiểu về Ruby on rails, chúng ta ít nhất đôi lần code của mình hay bị reviewers comment "Dùng find__by thay vì find"
Chắc các bạn cũng đôi lần thắc mắc và muốn tìm câu trả lời. Lý do là vì sao nhỉ?
find sẽ bắn ra một Exception nếu không có bất kỳ một record nào được tìm thấy. Nó chính là nguyên nhân dẫn tới việc server sẽ bị "crash". Và thật là khó chịu với người dùng khi web bị crash mà không hiểu chuyện gì đang xảy ra.
find__by thì không như vậy, nó không bắn ra Exception, đơn giản là nó trả về return value là "nil" và server sẽ không bị gián đoạn nếu không có record nào có giá trị phù hợp được tìm thấy.
>> User.create name: 'THE USER' # creates a user with id = 1
>> User.find(1) # returns the user
>> User.find_by(id: 1) # returns the user
>> User.find(2) # raises an exception
>> User.find_by(id: 2) # returns nil
Tới đây chúng ta đã thấy sự khác biệt và lý do nên dùng find_by hơn là find.
Đó là một tips nhỏ cho các bạn mới bắt đầu làm quen và tìm hiểu Ruby on rails để trong việc handle exceptions. Ngoài ra còn có các tips khác về Handle exceptions mình sẽ giới thiệu trong các bài tiếp theo.
All rights reserved