我正試圖完成非典型庫學習語言應用程序。我已經能夠創建書籍,人員和BookCheckOut。我的關係工作得很好,但是我在處理那些從未被檢出的書的時候遇到了問題。當在Ruby on Rails中找不到任何記錄時該怎麼辦
我在我的書類CheckedOut(返回一個布爾值)和LastCheckedOutTo(返回一個人)上創建了兩個屬性。我非常喜歡CheckedOut,並且確信我正在使用正確的RoR機制來確定一本書目前是否已簽出並返回布爾值。我對LastCheckedOutTo沒有那麼自信,因爲我的實現看起來像一團糟。
我是否正確地處理這個問題?有沒有更好的辦法?
Book類的全部
class Book < ActiveRecord::Base
has_many :book_check_outs
has_many :people, :through => :book_check_outs
def checked_out
if (book_check_outs.find(:first, :conditions => "return_date is null"))
true
else
false
end
end
def last_checked_out_to
if (book_check_outs.count > 0)
book_check_outs.find(:first,
:order => "out_date desc").person
else
Person.new()
end
end
end
我會使用嘗試(:人),這樣它不會被炸出來。 – 2009-09-21 13:09:02
好的,我怎麼處理我的看法last_checked_out_to。我會盡量不要讓一堆邏輯流入模型的視圖。具體而言,如何解決書籍查看問題,但在書籍從未檢出的情況下不會出錯,從而使last_checked_out_to無。 – ahsteele 2009-09-22 01:25:23
我想更好的重述是,而不是LastCheckedOutTo,如果它是CurrentlyCheckedOutTo。 – ahsteele 2009-09-22 01:28:45