我希望验证消息的顺序与我们在表单上的顺序相同。
我们有三个班级:
class User
accepts_nested_attributes_for :pledges
end
class Pledge
accepts_nested_attributes_for :companies
validates_presence_of :pledgor_surname
end
class Company
validates_presence_of :name
end
在一种形式中,我们可能必须为这三个属性获取属性,因此我们得到如下的参数:
{"pledges_attributes"=>
{"0"=>
{"pledgor_surname"=>"",
"id"=>"230",
"companies_attributes"=>
{"0"=>
{"id"=>"125",
"name"=>""
}
}
}
}
}
当我致电@user.update(params)
时,它无法按照我的预期进行验证。但errors#full_messages
列表如下所示:
["Company name can't be blank", "Pledgor surname can't be blank"]`
错误会以相同的顺序显示在页面上。
没有黑客攻击消息对象,有没有办法告诉Rails哪些命令将消息放入,或者至少应该先出现哪些出质人错误和公司错误?
答案 0 :(得分:0)
不,它们以哈希值返回,哈希值不提供可靠的排序。这可以被覆盖,这通常通过将文件添加到lib文件夹并在rails配置中指定覆盖来完成。
编辑根据Ruby 1.9.3以后的评论,哈希实际上是有序的,所以忽略我说的话。