弃用警告:已弃用对 ActiveModel::Errors 消息数组调用 `<<` 以添加错误。在 ruby
DEPRECATION WARNING: Calling `<<` to an ActiveModel::Errors message array in order to add an error is deprecated. in ruby
Ruby - 2.7.3
Rails - 6.1.3.2
弃用警告:不推荐调用 <<
到 ActiveModel::Errors 消息数组以添加错误。请改为调用ActiveModel::Errors#add
。 (从 /var/home/application_name/app/models/contacts.rb:4 处的验证调用)
1.class AssociatedProgramValidator < ActiveModel::Validator
2. def validate(record)
3. unless record.user.programs.pluck(:name).include? record.program_name
4. record.errors[:program_id] << "No #{record.program_name} found on user"
5. end
6. end
7.end
8.
9.class Contacts < ApplicationRecord
10.
11. include ActiveModel::Validations
12.end
请给点建议
我猜应该是:
record.errors.add(:program_id, message: "No #{record.program_name} found on user")
https://api.rubyonrails.org/v6.1.3/classes/ActiveModel/Errors.html#method-i-add
在测试中,看起来实际等效于
record.errors.add(:program_id, "No #{record.program_name} found on user")
我怀疑使用“消息”而不是将其用作错误类型可能是个更好的主意,但如果不进行调整,您的代码可能无法处理差异。
Ruby - 2.7.3 Rails - 6.1.3.2
弃用警告:不推荐调用 <<
到 ActiveModel::Errors 消息数组以添加错误。请改为调用ActiveModel::Errors#add
。 (从 /var/home/application_name/app/models/contacts.rb:4 处的验证调用)
1.class AssociatedProgramValidator < ActiveModel::Validator
2. def validate(record)
3. unless record.user.programs.pluck(:name).include? record.program_name
4. record.errors[:program_id] << "No #{record.program_name} found on user"
5. end
6. end
7.end
8.
9.class Contacts < ApplicationRecord
10.
11. include ActiveModel::Validations
12.end
请给点建议
我猜应该是:
record.errors.add(:program_id, message: "No #{record.program_name} found on user")
https://api.rubyonrails.org/v6.1.3/classes/ActiveModel/Errors.html#method-i-add
在测试中,看起来实际等效于
record.errors.add(:program_id, "No #{record.program_name} found on user")
我怀疑使用“消息”而不是将其用作错误类型可能是个更好的主意,但如果不进行调整,您的代码可能无法处理差异。