在我的一个模型中,我有一个before_create属性,用于设置从Web API获取的特定值。但是,如果在使用API时未找到任何结果,则此before_create将返回false,从而终止模型创建。
这样可以正常工作,但我还想显示一条警告消息,以便用户知道他们的输入未被接受。我该怎么做呢?
答案 0 :(得分:4)
before_create
不是报告错误的正确位置。您的before_create
应该尝试设置该值,然后验证器应该检查它是否存在,如果验证器没有找到该值,那么您将收到错误消息等。因此,如果您的属性被称为pancakes
,那么您将拥有以下内容:
before_validation :stuff_web_api_value_into_pancakes, :if => :new_record?
validates_presence_of :pancakes
当然,您可以使用与validates_presence_of
不同的验证器,这仅用于说明目的。并且你需要before_validation
hook以正确的顺序让事情发生,:if => :new_record?
只会在你创建新模型时运行。