Ruby - 2.7.3 Rails -6.1.3.2
取消预订:调用<<
到ActiveModel::Errors消息数组以添加错误已被弃用。请改为调用ActiveModel::Errors#add
。(从/var/home/application_name/app/models/contacts.rb:4的validate调用)
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
字符串
请给予一些建议。
3条答案
按热度按时间sc4hvdpw1#
我猜想应该是:
第一个月
https://api.rubyonrails.org/v6.1.3/classes/ActiveModel/Errors.html#method-i-add
dbf7pr2w2#
在测试中,它看起来实际上相当于
第一个月
我怀疑使用“message”而不是使用它作为错误类型可能是一个更好的主意,但是如果不进行调整,您的代码可能无法处理这种差异。
ldfqzlk83#
错误由Rails 6.1.And the following is taken from their comprehensive blog post on it.的lulalala从散列更改为对象
避免直接修改哈希值
在过去,您可以通过直接将消息附加到哈希来添加新的错误:
字符串
现在这也会引发一个弃用警告,因为它不再是真理的来源,而是在调用时从Error对象生成。相反,总是使用add接口或枚举方法:
型
操作以下内容将不会产生任何效果: