Je construis une application de vérification de livre simple. Une des choses que je dois faire est de déterminer si un livre est extrait. J'ai mes associations entre mes gens et les classes de livres mises en place à travers une classe book_check_out. Mon but est d'utiliser la propriété checked_out du livre pour déterminer si un livre est actuellement extrait. Cependant, dans ma mise en œuvre actuelle quand un livre n'est pas extrait et je référence book.checked_out.XXX je reçois l'erreur "Vous avez un objet nul quand vous ne l'attendiez pas!" Mon but est d'utiliser book.checked_out à deux fins dans certains points de vue montrent que oui, ce livre est extrait et dans d'autres vues montrent qui il est actuellement vérifié.Ruby on Rails empêche une erreur nulle lorsqu'il est supposé que l'enregistrement n'existe pas
class Person < ActiveRecord::Base
has_many :book_check_outs
has_many :books, :through => :book_check_outs
end
class Book < ActiveRecord::Base
has_many :book_check_outs
has_many :people, :through => :book_check_outs
def checked_out
book_check_outs || false
end
end
class BookCheckOut < ActiveRecord::Base
belongs_to :book
belongs_to :person
end
Ceci malheureusement, renvoie une erreur "Constante non initialisée Book :: BookCheckOuts". J'aime l'idée même si ma seule préoccupation est que je ne cherche pas à obtenir à la collection BookCheckOuts si elle a été check_out seulement la vérification la plus récente et si elle n'est pas extraite en retournant false est parfait. – ahsteele
J'ai reçu la "constante non initialisée Book :: BookCheckOuts" jusqu'à ce que je change les deux pour book_check_outs. Je pense qu'il doit faire w/la convention de nommage de base de données. – ahsteele
Désolé pour ça, tard dans la nuit et tout ça, le cerveau s'est brouillé et j'ai oublié que vous aviez besoin d'accéder à l'accesseur généré pas à la classe. –