класс 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.