Увеличьте число от нуля до 1 в рубине - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующий фрагмент кода, который очень хорошо работает для увеличения числа на основе последнего максимального числа в базе данных.Однако, если это ноль, я получаю ошибку.

Чего я хотел бы добиться, так это чтобы я мог сохранить 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 голосов
/ 28 ноября 2018

Я бы просто изменил

@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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...