Tôi nghĩ rằng điều quan trọng để có một "undo" phương pháp ala gmail khi phá hủy các hồ sơ thay vì hiển thị một popup gây phiền nhiễu mà nói, "Bạn có chắc chắn?".Cách tốt nhất để triển khai kiểu gmail "hoàn tác" trong Rails là gì?
Cách mà tôi đã thực hiện điều này là phải có một "deleted_at" cột timestamp trong mô hình mà được timestamped khi phá hủy phương pháp được gọi là
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
Để Revert/undo tôi sẽ chỉ cần đặt cùng một cột cho nil
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
Tôi sẽ chỉ cần thêm điều kiện để loại bỏ các lỗi "đã xóa" khi tôi gọi phương thức tìm. Có lẽ thiết lập một cron hoặc nền nhiệm vụ để thực sự tiêu diệt "xóa" foos sau một thời gian.
Làm việc cho tôi và dễ thực hiện nhưng tôi tò mò muốn có cách nào tốt hơn để triển khai tính năng này? Có thể có một plugin hoặc đá quý cung cấp cái này mà tôi không biết?
Bạn có thực sự quan tâm khi nó đã bị xóa không? Không phải là một lá cờ đủ? –
Vâng tôi không thực sự quan tâm khi nó đã bị xóa cho bây giờ nhưng kiến thức đó có thể hữu ích xuống dòng. Dù sao tôi nghĩ rằng dấu thời gian làm cho một lá cờ tốt. – JasonOng
Tôi đồng ý với tình cảm chung.Tuy nhiên, một vấn đề có thể xảy ra bởi nhu cầu làm trống trước như vậy là nó có thể lừa các nhà phát triển khác tìm kiếm thông tin (timestamp) hiện đang được sử dụng ở đâu. Khi nó không thực sự được sử dụng ở đâu đó, nó đại diện cho một chủ đề lỏng lẻo, thường gây khó chịu và tốn thời gian cho người không được khởi xướng. – Magne