如何批量本地化Rails 5中belongs_to字段的默认验证错误消息
解决Rails 5中批量本地化belongs_to默认必填错误消息的问题
这个问题我之前也踩过坑~Rails 5里belongs_to的默认必填验证,本质是检查关联的记录是否真实存在,它用的错误消息键是must_exist,而不是普通presence验证用的blank,这就是你之前配置blank没生效的原因。
要实现批量本地化所有belongs_to字段的默认错误消息,只需要在你的本地化文件里针对must_exist这个键做全局配置就可以了:
en: activerecord: errors: messages: must_exist: "必须关联对应的记录" # 替换成你想要的自定义文本,英文场景可写"is required and must exist" blank: "can't be blank" # 该配置依然生效,针对author_date这类普通presence验证的字段
配置完成后,当你创建一个未关联person的Book实例时,book.errors[:person]就会返回你设置的自定义消息,而非默认的"Person must exist"。
如果之后需要针对特定模型的特定关联单独设置不同消息,也可以做细粒度配置,比如:
en: activerecord: errors: models: book: attributes: person: must_exist: "请选择对应的作者"
不过批量生效的需求,用全局的must_exist配置就完全足够啦。
内容的提问来源于stack exchange,提问作者Буянбат Чойжилсүрэн
相关产品推荐
相关产品推荐

