0

コンテキスト:アバターが (クリップを介して) 接続された 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 から新しいエラーを挿入することでしたが、それはハックのようです。

ありがとう。

4

1 に答える 1

1
validates_attachment_presence :avatar, message: "The file is missing", on: :update

http://guides.rubyonrails.org/active_record_validations_callbacks.html#on

于 2012-07-12T14:11:46.443 に答える