如何更改以下方法以使用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
答案 0 :(得分:14)
通常,您可以使用returning
:
tap
行
[].tap do |full_messages|
但是,您的方法看起来相当于values.compact
,因此您可以用它替换代码。
答案 1 :(得分:3)
如果升级旧的Rails 2应用程序,则会出现此警告消息。由于Rails Version 2.3.9 Kernel#returns函数已被替换为Ruby 1.8.7原生的Object#tap。不幸的是,此错误通常是由较旧的插件和宝石引起的。对我来说,它帮助将haml版本从2.0.x更新到3.0.21,并将will_paginate版本从2.2.x更新到2.3.15。