Tôi đã làm việc với Rails một thời gian và một điều tôi thấy mình liên tục làm là kiểm tra xem một số thuộc tính hoặc đối tượng là không trong mã xem của tôi trước khi tôi hiển thị nó . Tôi bắt đầu tự hỏi liệu đây có phải là ý tưởng hay nhất không.Kiểm tra xem nil xem trong Ruby on Rails
Lý do cơ bản của tôi cho đến nay là do (các) ứng dụng của tôi dựa vào những điều không mong muốn của người dùng vào có thể xảy ra. Nếu tôi đã học được một điều từ lập trình nói chung thì người dùng nhập những thứ mà lập trình viên không nghĩ đến là một trong những nguồn lỗi thời gian chạy lớn nhất. Bằng cách kiểm tra các giá trị nil tôi hy vọng sẽ tránh được điều đó và có quan điểm của tôi một cách duyên dáng xử lý vấn đề.
Vấn đề là mặc dù tôi thường vì nhiều lý do có kiểm tra giá trị nil hoặc không hợp lệ tương tự trong mã mô hình hoặc bộ điều khiển của tôi. Tôi sẽ không gọi nó là sự sao chép mã theo nghĩa hẹp nhất, nhưng nó không có vẻ rất khô. Nếu tôi đã kiểm tra các đối tượng nil trong controller của tôi thì có ổn không nếu view của tôi chỉ giả thiết đối tượng thực sự không phải là nil? Đối với các thuộc tính có thể là nil được hiển thị, điều đó có ý nghĩa với tôi để kiểm tra mọi lúc, nhưng đối với các đối tượng thì tôi không chắc thực hành tốt nhất là gì.
Dưới đây là một ví dụ đơn giản, nhưng điển hình về những gì tôi đang nói về:
mã điều khiển
def show
@item = Item.find_by_id(params[:id])
@folders = Folder.find(:all, :order => 'display_order')
if @item == nil or @item.folder == nil
redirect_to(root_url) and return
end
end
chế độ code
<% if @item != nil %>
display the item's attributes here
<% if @item.folder != nil %>
<%= link_to @item.folder.name, folder_path(@item.folder) %>
<% end %>
<% else %>
Oops! Looks like something went horribly wrong!
<% end %>
Đây có phải là một ý tưởng tốt hay là nó chỉ ngớ ngẩn?