コンテキスト:アバターが (クリップを介して) 接続された User モデルがあります。ユーザーの作成時にはアバターは必要ありませんが、ユーザーが自分のプロフィールでアバターを更新するときに、アバターが必要になるようにしたいと考えています。ユーザーが新しいアバターをアップロードすると、アバターのみが ajax リクエストを通じて送信されます。現時点では、file_field が空の場合に検証エラーを返したいと考えています。
最初は使った
validates_attachment_presence :avatar, message: "The file is missing", :if => ->{ !new_record? }
しかし、期待どおりに機能せず、検証テストスイートが失敗しますshould be_valid
describe User do
before do
@user = FactoryGirl.create :user
end
subject { @user }
[...]
it { should be_valid }
end
これは正常です。
これをどのように処理すべきかについて何か考えはありますか? 私が思いついた他の唯一のアイデアは@user.errors
、ファイルフィールドが空の場合に UserController#update から新しいエラーを挿入することでしたが、それはハックのようです。
ありがとう。