我有一个before_validation
重新格式化其中一个条目的回调。我需要它在验证之前运行,以确保格式化的输出被正确解析。但据我了解,每次我打电话valid?
检查数据是否正常时,都会重新格式化该条目。我可以用另一种方式做到这一点,因为valid?
我只想检查所有字段是否有效并且不更改某些内容。
问问题
261 次
1 回答
2
这看起来和这个很相似:Rails model validation on create and update only
你可以做
before_validation(:on => :create) do
reformat #method call, not a symbol
end
before_validation(:on => :update) do
reformat #method call, not a symbol
end
但是当我打电话时它仍然为我运行valid?
。不知道为什么,因为那不是在创建或更新的上下文中,所以我觉得 Rails 在这种情况下对我们撒谎。
如果你能把它变成 a before_save
,那么它应该可以工作,因为它在验证之后运行。你说你需要验证重新格式化时它仍然可以,所以也许添加一个新方法来验证重新格式化,然后做
before_save :reformat, :validate_reformatting
或在用于重新格式化的方法末尾添加完整性检查。
于 2012-06-14T15:04:34.480 回答