2011-01-10 8 views
0

フォームでレール検証を使用する際に問題が発生します。私がやっていることは、ユーザーが好きなサイトのURLを入力しているという形です。彼らが提出すると、私の作成メソッドはnokogiriを使ってURLを開き、Webページのヘッダーを解析します。私が実行している問題は、ユーザーがフォームに入り、空白の場合、作成メソッドがnilを開こうとしました。原因はエラーです。私はそうのようなメソッドに検証を追加しようとしました:Rails 3 - フォーム検証 - プレテスト?

validates :url, :presence => true 

ユーザーがフォームを入力した場合、この検証は、空のテキスト領域をキャッチし、それが検証をチェックする前にパスを開こうとしたとして、失敗しません。レールの中に、作成の開始時に検証を実行したいと指定する方法がありますか(これは私が起こっていると仮定しています)?

答えて

0

after_validationまたはafter_createコールバックでnokogiriを呼び出してみませんか?これはあなたの問題をエレガントに解決します。

+0

変数をコールバックに渡す方法はありますか?あるいは、私は自己を使うことができますか? – Kombo

+0

私は自己を使うことができると信じています。ただし、その値(つまり、インスタンス属性としてアクセスできるが、データベースに保持されていない値)に対して、モデルに書き込み可能な属性を設定できます。 –