Ruby on rails 如何显示保存在表中的值的下一个值?

Ruby on rails 如何显示保存在表中的值的下一个值?,ruby-on-rails,ruby,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby On Rails 2,当用户保存发票的初始编号时,我尝试创建一个初始编号。发票的初始编号将继续使用下一个值 表2工作示例: |invoice_nums| |id| |invoice_num| 1 3010 |invoices| |id| |invoice_num| |amount| 1 3011 1000 2 3012 1000 3 3013 1000 表示例在我从Inv

当用户保存发票的初始编号时,我尝试创建一个初始编号。发票的初始编号将继续使用下一个值

表2工作示例:

|invoice_nums|
  |id|   |invoice_num|
   1        3010
|invoices|
  |id|   |invoice_num| |amount|
   1        3011         1000
   2        3012         1000
   3        3013         1000 
表示例在我从InvoiceNums更改invoice_num值时不起作用:

|invoice_nums|
  |id|   |invoice_num|
   1        2010
|invoices|
  |id|   |invoice_num| |amount|
   4        2014         1000      ###SHOULD BE 2011
   5        2015         1000      ###SHOULD BE 2012 
这是我的控制器:

  def new
   @num_ini = InvoiceNum.first
   @num_last = Invoice.last
   @trick = Invoice.count(:all) 
  end
以下是我的看法:

<% @sum= "%06d" % (@num.invoice_num.next.to_i + @trick.to_i) %>
<%= @sum %>

我试着在视野中看这个

<%= @sum= (@num_last.invoice_num.to_i  || @num_ini.invoice_num.to_i )+ 1   %>

我也在视图中尝试了这一点:

<% if @num_ini.invoice_num.to_i > @num_last.invoice_num.to_i   %>
    <%= @sum= @num_ini.invoice_num.to_i + 1 %>
<% else %>
    <%= @sum=@num_last.invoice_num.to_i + 1 %>
<% end %>
@num\u last.invoice\u num.to\u i%>
有人能帮我吗

我正在尝试根据发票编号中的最后一张发票编号继续发票编号

可以接受所有帮助。

类发票class Invoice < ActiveRecord::Base
  INITIAL_INVOICE_NUMBER = 2009
  before_create :set_invoice_number

  def set_invoice_number
    (Invoice.maximum(:invoice_number) || self::INITIAL_INVOICE_NUMBER) + 1
  end

end
初始发票号=2009 创建前:设置发票号 def设置发票编号 (发票。最大值(:发票号)|自身::初始发票号)+1 结束 结束 注:


我做了初始的
2009
,因为
+1
或者将行更改为三元条件

2010年发票编号的逻辑是什么?您如何更改初始编号?您是否在操作表上的
自动增量
设置?您甚至还没有指定您在这里使用的数据库后端。实际上,更改是没有意义的,因为如果您只有一条记录,仍然
。最后一条
应该可以工作,您不需要
|
|
是针对空表的情况,如果你知道你不会遇到这种情况,那么就使用
。last
,也可以删除
@sum=
,因为你只是直接打印行,比我的行好+1,这绝对是一种方法,除非他想能够独立操作种子。尽管您需要添加
self.invoice\u number=
,否则此步骤没有影响。在我们的项目中,我们通常使用配置表,因此在本例中,它类似于
MyConfig.find\u by(名称:'initial\u invoice\u number')
或任何类名,使配置保持动态,更改配置不需要部署。您是否使用rails 2?这太老了,老兄,我已经在rails 3和rails 4上测试过了,应该可以用了,我不知道rails 2哦,顺便说一下,这没关系……现在我将尝试在rails 2中使用这个逻辑。如果关键字
maximum
不起作用,你可以始终使用
select('max(发票号)作为任意内容)