我有以下一段代码,该代码对于基于数据库中的最新最大数字递增数字确实非常有效。但是,如果为零,则会出现错误。
我想要实现的是,我可以将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
答案 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