Если вы просто хотите СУХОЙ, вы можете использовать временную переменную:
x = ClassName.method
x.blank? ? false : x
x = PROFESSIONAL_ROLES.key(self.professional_role)
x.nil? ? 948460516 : x
Если вы не хотите использовать временную переменную, вы можете использовать блок:
Proc.new do |x| x.blank? ? false : x end.call(ClassName.method)
Proc.new do |x| x.nil? ? 948460516 : x end.call(PROFESSIONAL_ROLES.key(self.professional_role))
Для описываемых вами случаев (когда вы просто хотите использовать исходное значение при сбое проверки по умолчанию), было бы просто написать вспомогательный метод:
def x_or_default(x, defval, checker = :nil?)
if x.send(checker) then defval else x end
end
x_or_default(ClassName.method, false, :blank?)
x_or_default(PROFESSIONAL_ROLES.key(self.professional_role), 94840516)
, который очень похож на описанный метод ||
, но также будет работать с вашим примером blank?
.
Я обычно использую временные переменные для такого рода вещей.