class ActiveRecord::Promise
Методы экземпляров публичного интерфейса
# File activerecord/lib/active_record/promise.rb, line 13 def pending? @future_result.pending? end
Возвращает значение, указывающее, выполняется ли связанный запрос в данный момент.
# File activerecord/lib/active_record/promise.rb, line 36 def then(&block) Promise.new(@future_result, @block ? @block >> block : block) end
Возвращает новый ActiveRecord::Promise, который применит переданный блок, когда значение будет обработано:
Post.async_pick(:title).then { |title| title.upcase }.value
# => "POST TITLE"
# File activerecord/lib/active_record/promise.rb, line 20
def value
return @value if defined? @value
result = @future_result.result
@value = if @block
@block.call(result)
else
result
end
end Возвращает результат запроса. Если запрос ещё не завершен, доступ к #value заблокирует выполнение, пока запрос не завершится. Если запрос завершился с ошибкой, #value выбросит соответствующую ошибку.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.