合同has_many發票。創建合同後,模型會根據特定的表單參數自動創建發票。Rails從模型實例中獲取最新的兒童記錄
我希望能夠從給定合同中選擇最近創建的發票。
此我想達到什麼樣的:
contract = Contract.new(params)
contract.save
invoice = contract.invoices.most_recent # < wanting to get the most recent
#or possible even do this if it's quicker
invoice = contract.most_recent_invoice
哪種方法是最擅長的,什麼是去這樣做的最佳方式? Rails是否有內置方法?我只想學習和維護最佳實踐。
謝謝!
這正是我其實是試圖做的,但我離開過方法名的'self.',因爲我不打算試圖直接類名稱訪問它。謹慎解釋?如果沒有,那麼至少它現在正在工作,因爲我想現在:)謝謝 – 2012-08-11 18:16:35
這是Rails在我看來的缺點之一。將集合方法定義爲類方法確實令人困惑,特別是因爲範圍完全相同,但語法不同。任何你聲明爲類方法的方法都會被「應用」到關係中,這就是爲什麼這會起作用。幾個月前我寫了一種概念證明gem,叫做[Herd](https://github.com/beerlington/herd),它允許你在一個單獨的類中定義集合方法。我不建議您將它用於製作,但如果您有興趣探索源代碼,那麼它就在那裏。 – 2012-08-11 18:22:11
感謝您的額外提示;非常好知道。 – 2012-08-11 18:30:23