我正在構建一個簡單的書籍檢出應用程序。我需要做的一件事就是確定一本書是否被簽出。我通過book_check_out類設置了我的人員和書籍班級之間的關聯。我的目標是使用book的checked_out屬性來確定一本書目前是否已簽出。但是,在我目前的實現中,當一本書沒有被檢出並且我參考book.checked_out.XXX時,我接收到錯誤「」當你沒有想到它時,你有一個零對象!「我的目標是使用book.checked_out出於兩個目的,在一些觀點中表明是的,那本書被檢出,並在其他視圖中顯示目前檢出的人。Ruby on Rails在假定記錄可能不存在時防止nil錯誤
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
這不幸的是,返回一個錯誤「未初始化常量Book :: BookCheckOuts」。我喜歡這個主意,但我唯一擔心的是,如果checked_out只是最近一次檢出,並且沒有檢出返回false,那麼我不會試圖訪問BookCheckOuts集合。 – ahsteele 2009-09-20 22:59:25
我確實收到「未初始化的常量Book :: BookCheckOuts」,直到我將它們都更改爲book_check_outs。我認爲它必須做w /數據庫命名約定。 – ahsteele 2009-09-21 01:39:47
對不起,深夜響應和所有這些,大腦變得模糊,忘記了你需要訪問生成的訪問者而不是類。 – 2009-09-21 06:30:00