0

合同有_许多发票。创建合同后,模型会根据某些表单参数自动创建发票。

我希望能够从给定合同中选择最近创建的发票。

这就是我想要实现的:

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

我会在 Invoice 模型中添加一个类方法,按 created_at 对其进行排序并返回第一个:

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_invoice通过 created_at 创建订单范围并创建将limit限制记录数量的范围(最佳实践)

于 2012-08-11T18:06:38.517 回答