【发布时间】:2011-11-15 07:00:49
【问题描述】:
我有两个模型如下
class User < ActiveRecord::Base
validates_associated :account
end
class Account < ActiveRecord::Base
belongs_to :user
#----------------------------------Validations--Start-------------------------
validates_length_of :unique_url, :within => 2..30 ,:message => "Should be atleast 3 characters long!"
validates_uniqueness_of :unique_url ,:message => "Already Taken"
validates_format_of :unique_url,:with => /^([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])$/ , :message => " Cannot contain special charaters"
#----------------------------------Validations--End---------------------------
end
现在,当我将帐户与用户关联时,它会显示
“帐号无效”
相反,我想直接从该模型获取错误消息。 所以应该说
"Should be atleast 3 characters long!" 或 "Already Taken" 或 " Cannot contain special charaters"
有没有办法做到这一点?
我不想给出一个笼统的信息,比如:
validates_associated :account , :message=>"one of the three validations failed"
【问题讨论】:
-
您应该能够访问帐户验证消息,就像访问用户的验证消息一样——它们只是在帐户上。
-
我不想那样做......这是我的问题背后的想法
-
所以将错误信息从账户复制给用户。
-
@Gaurav,你看到我发布的解决方案了吗?这似乎完成了你正在寻找的东西。无法使用内置的“validates_associated”使错误消息冒泡(如果您检查源代码,您会发现它没有任何选项)。但正如我的帖子所示,制作这个验证器的错误冒泡版本很容易。
-
不,那里没有副本。您会将帐户的消息复制给用户;错误存储在地图中,可以任意操作。基本上是本答案的手动版本。顺便说一句,他的回答正是你所要求的——当你想要一些不是三个框架提供的东西时,你必须自己去做。他的方法对应用程序开发人员隐藏了它,这似乎是您所要求的。