我正在使用Devise并且模型设置如下:
User
has_one :profile
Profile
belongs_to :user
has_one :address
Address
belongs_to :profile
为了测试,我在表单上引起了错误(它是一个嵌套的表单,使用了所有3个模型)。这是产生的错误哈希(@user.errors hash
):
{
:email=>["can't be blank"],
:password_confirmation=>[],
:password=>["can't be blank"],
:"profile.first_name"=>["can't be blank","is too short (minimum is 1 characters)"]
:"profile.address.street"=>["can't be blank"],
}
所有错误都是预期的,但哈希的密钥格式是意外的(:"profile.address.street"
) - 我原以为每个嵌套模型的errors
哈希会包含该模型的错误?
我在@user.profile.errors
哈希里面检查过,那是空的!
如何将嵌套模型特定错误添加到嵌套模型中的相关errors
哈希中?
更新
我破解了一个解决方案here。对此也有疑问,所以解决方案不会作为这个问题的答案发布:)
答案 0 :(得分:1)
不久前进入这个并不得不做一些代码来自己解决这些问题。 Rails默认不支持它--Ryan Daigle触及它here a bit。
答案 1 :(得分:1)
试试这个:
@user.profile.valid?
@user.profile.errors