ペーパークリップの添付ファイルが画像であり、5MBを超えていないことを検証するために使用しているカスタムバリデーターがいくつかあります。すべてが期待どおりに機能します
しかし、私は1つのことに少し興味があります。私の統合テストでは、アップロードに失敗した後、天気user.avatar
がゼロであることが確認され、ランダムなものが返されます。
テスト:
it 'Does not allow a non-image file to be uploaded as an avatar' do
visit edit_user_path(@user)
attach_file('user_avatar', File.dirname(__FILE__)+'/users_spec.rb')
click_button 'Update'
page.should have_content "Avatar must be an image"
@user.reload
@user.avatar.should be_nil
end
結果:
1) Users Avatars Does not allow a non-image file to be uploaded as an avatar
Failure/Error: @user.avatar.should be_nil
expected: nil
got: /avatars/original/missing.png
# ./spec/requests/users_spec.rb:147:in `block (3 levels) in <top (required)>'
これはある種のデフォルトのプレースホルダーペーパークリップがそこに貼り付いていると思いますが、ユーザーshow
ページに移動する@user.avatar
とnil
予想どおりです。何が得られますか?
私も試しましたが、同じ結果になりました
@user.should_not have_attached_file(:avatar)
それがペーパークリップ独自のマッチャーであることを考えると、それは機能するはずのようですが、それも失敗します
いくつかのプットステートメントの後、何かが行われる前に@user.avatar
利回りが表示/avatars/original/missing.png
されるので、少なくとも変更されていないことは確かだと思います。