Мне нравится @ Иордания. Тем не менее, кажется, что вызов неполный - параметр is_ratio также выбран из значения, но не указан.
Только ради аргумента я предлагаю вам сделать еще один шаг и предоставить класс , который очень узко ориентирован на оценку «заявленного» значения. Это может показаться экстремальным, но оно соответствует понятию единой ответственности (ответственность оценивает «ценность» для заявленного - в то время как объект «детали» может быть сфокусирован на чем-то другом и просто использует оценку).
Было бы выглядеть примерно так:
class StatedEvaluator
attr_reader :value, :is_ratio
def initialize(value = {})
@value = ActiveSupport::StringInquirer.new(value.fetch(:stated, ''))
@is_ratio = ActiveSupport::StringInquirer.new(value.fetch(:is_ratio, ''))
end
def stated
return nil if value.blank? || value.Incomplete?
return value.true? if is_ratio.true?
apply_currency_increment_for_save(value)
end
end
detail.stated = StatedEvaluator.new(value).stated
Обратите внимание, что это делает использование Rails' StringInquirer class.
Это код Rails? - 'blank?' определяется Rails, а не частью Ruby –
Что вы хотите сделать, если это nil? например, поднять ошибку/умереть/выйти? – zee
да это рельсы – user3437721