Ответ 1
В общем случае вы можете заменить строку returning
на этот вызов на tap
:
[].tap do |full_messages|
Однако ваш метод выглядит как эквивалент values.compact
, поэтому вы можете просто заменить его на это.
Как изменить следующий метод для использования tap
, чтобы остановить предупреждения типа
DEPRECATION WARNING: Object#returning has been deprecated in favor of Object#tap. (called from full_messages at /Users/millisami/apps/pandahr/config/initializers/fix_active_model_full_message.rb:17)
:
ActiveModel::Errors.class_eval do
# Remove complicated logic
def full_messages
returning full_messages = [] do
self.each_key do |attr|
self[attr].each do |msg|
full_messages << msg if msg
end
end
end
end
end
В общем случае вы можете заменить строку returning
на этот вызов на tap
:
[].tap do |full_messages|
Однако ваш метод выглядит как эквивалент values.compact
, поэтому вы можете просто заменить его на это.
Это предупреждение может появиться, если вы обновите старые приложения Rails 2. Поскольку Rails Version 2.3.9, функция возврата ядра # была заменена ссылкой на объект #, которая является родной для Ruby 1.8.7. К сожалению, эта ошибка часто вызвана более старыми плагинами и драгоценными камнями. Для меня это помогло обновить версию haml от 2.0.x до 3.0.21, а версию will_paginate от 2.2.x до 2.3.15.