0

Carrierwave を使用して画像ファイルをアップロードしています。私は基本的に、DBに送信されるタイトル、説明、画像、およびカテゴリを持つフォームフィールド「_form.html.erb」を持っています。私がやりたいのは、カテゴリが != 「ソーシャル」の場合、画像の存在を確認しますが、ソーシャルと等しい場合は、画像なしで DB に送信します。現在、送信時に「画像を空白にすることはできません」というエラーが表示されます。このエラーは、モデルにある validates_presence_of :image 行から発生している可能性があると思いましたが、これについてはわかりません。そのため、if ステートメント ブロックでラップしようとしましたが、まだ取得中です。私がやろうとしていることを回避する方法を知っている人はいますか。

if :category != "social" 
    validates_presence_of :image
  end
4

1 に答える 1

2

バリデータProcのオプションで a を使用します。:if

validates :image, presence: true, if: Proc.new { |a| a.category != "social" }

推奨読書: http://guides.rubyonrails.org/active_record_validations_callbacks.html#using-a-proc-with-if-and-unless

于 2012-12-10T15:24:40.643 に答える