Theo cập nhật của bạn, tôi sẽ đề xuất điều này:Mỗi khi bạn xóa một người dùng có bài đăng và sau đó cố gắng liệt kê các bài đăng của họ <%= post.user.name %>
sẽ trả về nil vì bài đăng này không còn người dùng để tham khảo. Bạn có thể sử dụng
has_many :posts, dependent: :destroy
trong mô hình Người dùng như tôi đã đề xuất ở trên, hoặc bạn thêm một số chức năng xóa người dùng để tránh lỗi khi cố xem bài viết của họ. Một số lựa chọn là:
Khi người dùng bị xóa, bạn chỉ có thể xóa mọi thứ trừ tên và id của họ trong hàng đó của bảng người dùng, điều đó sẽ cho phép bạn có <%= post.user.name %>
trả về một giá trị.
Khi người dùng bị xóa, bạn có thể xóa mọi thứ trong thông tin bảng Người dùng của họ và thêm "-người dùng đã xóa" sau khi nó giống như những gì Tumblr làm khi người dùng hủy kích hoạt tài khoản của họ và tên của họ xuất hiện trong một bài đăng trên một số Tumblr khác.
Bạn có thể tạo Người dùng trong DB được gọi là "người dùng đã xóa" và để người dùng đó kế thừa mọi bài đăng từ người dùng bị xóa. Trong Bộ điều khiển người dùng, hãy thêm một cái gì đó vào delete
của bạn hành động để thay đổi trường user_id trong bài đăng của họ thành tài khoản "do người dùng xóa".
Hoặc cuối cùng, bạn có thể chỉ cần kiểm tra xem post.user có trả về giá trị hay không, và nếu không, chỉ cần in nội dung như "Người dùng không còn tồn tại trong hệ thống"
Tất nhiên điều này phụ thuộc vào việc bạn có muốn cho phép người dùng bị xóa nhưng vẫn giữ bài đăng của họ hay không. Đó chắc chắn là một trường hợp có thể xảy ra nếu đây không chỉ là một dự án lớp hoặc một cái gì đó bạn đang làm chỉ để học Rails. Hi vọng điêu nay co ich. Điều đó chắc chắn khiến tôi suy nghĩ về những cạm bẫy trong việc cho phép người dùng xóa hồ sơ của họ mà không cần có thứ gì đó để xóa.