Я работаю с Rails некоторое время, и одна вещь, которую я постоянно делаю, - это проверить, нет ли какого-либо атрибута или объекта в моем коде представления, прежде чем я его покажу. Я начинаю задаваться вопросом, всегда ли это лучшая идея.
Мое обоснование до сих пор заключалось в том, что, поскольку мое приложение полагаются на ввод пользователя, могут возникнуть непредвиденные ситуации. Если я вообще научился программировать, что пользователи, вводящие вещи, о которых программист не думал, являются одним из самых больших источников ошибок во время выполнения. Проверяя значения nil, я надеялся обойти это, и мои взгляды изящно справляются с этой проблемой.
Дело в том, что, как правило, по разным причинам у меня есть аналогичные нулевые или недопустимые значения в моей модели или коде контроллера. Я бы не назвал это дублированием кода в строгом смысле слова, но он просто не кажется очень сухим. Если я уже проверил для nil объектов в моем контроллере, это нормально, если мой взгляд предполагает, что объект действительно не нуль? Для атрибутов, которые могут быть ноль, которые отображаются, имеет смысл проверять каждый раз, но для самих объектов я не уверен, что является лучшей практикой.
Вот упрощенный, но типичный пример того, о чем я говорю:
код контроллера
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
просмотреть код
<% if @item != nil %>
display the item 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 %>
Это хорошая идея или это просто глупо?