Vérification de zéro dans Ruby on Rails

J'ai travaillé avec des Rails pour un certain temps maintenant, et une chose que je trouve moi-même constamment en train de faire est de vérifier pour voir si un attribut ou un objet est nul à mon avis, le code avant de me l'afficher. Je commence à me demander si c'est toujours la meilleure idée.

Mon raisonnement a été jusqu'ici que depuis mon application(s) s'appuient sur la saisie de l'utilisateur, des choses inattendues peuvent se produire. Si j'ai appris une chose de la programmation en général c'est que les utilisateurs de la saisie de choses que le programmeur n'a pas à penser, c'est l'une des plus grandes sources d'erreurs d'exécution. En vérifiant néant valeurs, je suis en espérant de pas de côté et ont de mon point de vue traiter le problème.

La chose est mais je, pour diverses raisons similaires nulle ou invalide la valeur des chèques dans mon modèle ou le contrôleur de code. Je n'appellerais pas cela de la duplication de code dans le sens le plus strict, mais il ne semble pas très SÈCHE. Si j'ai déjà vérifié pour néant objets dans mon contrôleur est-ce correct si mon point de vue juste suppose que l'objet n'est vraiment pas nul? Pour les attributs qui peuvent être de néant qui sont affiché, il fait sens pour moi de vérifier à chaque fois, mais pour les objets eux-mêmes, je ne suis pas sûr de ce qui est la meilleure pratique.

Ici est simplifié, mais l'exemple typique de ce que je parle:

contrôleur de code

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

afficher le 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 %>

Est-ce une bonne idée ou est-il tout simplement ridicule?

source d'informationauteur seaneshbaugh | 2010-05-01