0

契約has_many請求書。契約を作成した後、モデルは特定のフォームパラメータに応じて自動的に請求書を作成します。

特定の契約から最近作成された請求書を選択できるようにしたいと考えています。

これは私が達成したいことです:

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にはメソッドが組み込まれていますか?ベストプラクティスを学び、維持したいだけです。

ありがとう!

4

3 に答える 3

1

create_atで並べ替え、最初のメソッドを返すクラスメソッドをInvoiceモデルに追加します。

class Invoice < ActiveRecord::Base
  def self.most_recent
    order('created_at DESC').limit(1).first
  end
end

invoice = contract.invoices.most_recent # => Gives the last invoice created for this contract
于 2012-08-11T18:06:04.387 に答える
1

最後の方法を試すことができます。例:

contract = Contract.new(params)
contract.save

invoice = contract.invoices.last
于 2012-08-11T18:08:07.800 に答える
0

most_recent_invoicecreated_atによる注文のスコープを作成limitし、レコード数を制限するスコープを作成します(ベストプラクティスのため)

于 2012-08-11T18:06:38.517 に答える