2011-01-19 10 views
0

Ruby on Rails 3用の 'paperclip'宝石を使用しています。をファイルパス値( "/Users/Desktop/image.gif"または "C:/Users/Desktop/image.gif"のような文字列)が 'file_field'に入力されていない場合、このフィールドにはエラーが発生します。Ruby on Rails 3とPaperclip gem:添付ファイルのカスタムプレゼンス検証( 'validates_attachment_presence'を使用しない)

私はRoRが他のフィールドよりもfile_fieldの扱い方が異なるため、問題があると思います。

Notice: 'paperclip'にある 'validates_attachment_presence'メソッドは使用しません。

私は何をしたいのですか?もしそうなら、それを行う方法は


私は自分のコントローラにコードしようと試み:

if params[:user][:avatar].blank? 
    # I also used 
    # - 'nil?' instead of 'blank' 
    # - !params[:user][:avatar] 
    @user.errors.add(:avatar, "can not be blank") 
end 

をしかし、私は空のファイル(ゼロ/空白のパス値)でフォームを送信しようとした場合、私は

を取得

NoMethodError
期待していないときにオブジェクトがありません。
ActiveRecord :: Baseのインスタンスが想定されている可能性があります。 nilを評価しながら
エラーが発生しました[]

+0

検証コードはどのように見えますか? – polarblau

+0

私は質問を更新しました。 – user502052

+0

モデルに適切な(カスタム)検証を使用しない理由がありますか? – polarblau

答えて

1

ジャストアイデアを:あなたも何かが最初のテキストフィールドに入力されるまで、アップロードボタンを有効にしないためにJavascriptを使用することができます。これにより、サーバーへの不必要な往復の必要性が回避されます。 User.rbモデルがattr_accessibleを使用している場合、フィールドはその行に存在することを検証することができます。

+0

あなたは何を言っているのか本当の例を挙げることができますか?特に、「User.rbモデルがattr_accessibleを使用していて、そのフィールドがその行に存在することを検証したいでしょうか? – user502052

+0

あなたのUser.rbモデルで、あなたが渡そうとしている場合:アバターとattr_accessibleを使って物事を安全に保つことを意味します:attr_accessor::avatar、:loginなど...そうでなければ、そのパラメータは受け入れられません。 – jschorr

関連する問題