Ruby on rails 如何显示保存在表中的值的下一个值?
当用户保存发票的初始编号时,我尝试创建一个初始编号。发票的初始编号将继续使用下一个值 表2工作示例: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
|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(发票号)作为任意内容)