为何Rails模型中自定义ETH地址验证始终不通过?
问题分析与解决
你在模型的自定义验证方法中存在参数传递错误,导致验证始终失败:
在validate_address_type方法里,你调用AdequateCryptoAddress.valid?时,第一个参数传的是字段名符号:ETH_address,而不是当前用户实例的实际地址值。验证方法需要的是要校验的地址字符串,而非字段名称的符号。
修正后的代码
class User < ApplicationRecord attribute :ETH_address, :string validates :name, presence: true, length: {minimum: 3, maximum: 30} validates :ETH_address, presence: true, length: { minimum: 42, maximum: 42} validate :validate_address_type def validate_address_type errors.add(:ETH_address, 'invalid address') unless AdequateCryptoAddress.valid?(self.ETH_address, 'ETH') end end
补充检查项
- 确认
AdequateCryptoAddress.valid?的参数顺序符合库的要求:你的控制台调用返回true,说明参数顺序(地址在前、币种在后)是正确的,只需确保模型中传入的是实例的地址属性值即可。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

