1

before_validationエントリの1つを再フォーマットするコールバックがあります。フォーマットされた出力が正しく解析されたことを確認するために、検証の前に実行する必要があります。ただし、データに問題がないかどうかを確認するために電話をかけるたびに理解できる限りvalid?、エントリは再フォーマットされます。これを別の方法で行うことはできますか?なぜなら、valid?すべてのフィールドが有効であり、何かを変更しないかどうかを確認したいだけだからです。

4

1 に答える 1

2

これは、作成時と更新時のみの Rails モデルの検証と非常によく似ています。

できるよ

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 は私たちに嘘をついているように感じます。

にできる場合はbefore_save、検証後に実行されるため、機能するはずです。再フォーマットしても問題ないことを検証する必要があると言ったので、再フォーマットを検証する新しいメソッドを追加して、

before_save :reformat, :validate_reformatting

または、再フォーマットに使用するメソッドの最後にサニティ チェックを追加します。

于 2012-06-14T15:04:34.480 に答える