在Ruby中将数字从nil递增到1

时间:2018-11-28 17:51:17

标签: ruby-on-rails ruby

我有以下一段代码,该代码对于基于数据库中的最新最大数字递增数字确实非常有效。但是,如果为零,则会出现错误。

我想要实现的是,我可以将share_number: @latest_share += 1保留在适当的位置,但是还要在此行中检查是否返回nil并将其设置为1,然后循环继续进行。

这有可能吗?

谢谢!

# Get last sharenumber in captable 
@latest_share = @transaction.captable.shares.maximum(:share_number)

@number_of_share_numbers_to_create.times do |i| # TODO Refactor this so we don't slow down the application with so many queries
  Share.create(
    owner_id: params[:buying_shareholder_id], 
    captable_id: @transaction.captable.id, 
    company_id: @transaction.company.id, 
    share_number: @latest_share += 1 #Increment up from the latest number, but start at 1 if this is nil 
  )
end

1 个答案:

答案 0 :(得分:4)

我只是改变

@latest_share = @transaction.captable.shares.maximum(:share_number)

@latest_share = @transaction.captable.shares.maximum(:share_number) || 0

或者(假设您使用的是整数)

@latest_share = @transaction.captable.shares.maximum(:share_number).to_i

nil.to_i == 0