J'ai un problème dans les rails où, j'ai une relation de base à plusieurs entre deux modèles (ordre et statut). Ces modèles ressemblent à ce qui suit:"méthode indéfinie` nom 'pour nil: NilClass "lors de la création d'une nouvelle instance
class Order < ActiveRecord::Base
has_many :products, :through => :lines
has_and_belongs_to_many :statuses
default_scope order("#{table_name}.created_at desc")
end
et
class Status < ActiveRecord::Base
has_and_belongs_to_many :orders
end
Dans mon avis d'index pour les commandes, je suis afficher l'état le plus récent de l'Ordre, si order.statuses.last.name, cependant, Lorsque je crée un nouvel ordre, je reçois une erreur. Cette erreur concerne un nom de méthode indéfini, car les nouvelles commandes n'ont aucune relation lors de leur création.
Ma question est, est-il un moyen d'initialiser une relation entre mes deux modèles, avant d'enregistrer une nouvelle commande? Je voudrais que mes commandes aient toujours au moins le premier statut dans ma collection de statuts, mais je ne veux pas avoir à le vérifier manuellement avant d'enregistrer.
L'erreur de bonnes mesures est:
undefined method `name' for nil:NilClass
pour cette ligne à mon avis:
<td><%= order.statuses.last.name %></td>
Merci à tous.
Eh bien, afin d'initialiser le 'statuses' vous devez soit le coder en dur ou frapper la base de données. Alors pourquoi ne pas simplement enregistrer et ensuite passer à autre chose? Sauf si vous mettez en cache le tableau de statuts et initialisez votre commande de cette façon. – Jeremy