2012-03-13 9 views
2

現在、私のアプリケーションでは2つのテキストボックスがあります。 1つはローカルイメージアップロード用、もう1つはリモートイメージURL用です。ユーザーがローカルイメージファイルを選択すると「リモートイメージURL」が消去され、逆も同様であるため、1つのボックスだけが満たされていることを確認しています。CarrierWave(RoR)にリモート画像URLまたは画像がアップロードされているかどうかを確認

validate_image_fieldsを使用して、いくつかの検証を実行しようとしています。その検証方法でどのボックスが記入されているかをどのように判断するのですか?

new.html.erb

<%= form_for @painting, :html => {:multipart => true} do |f| %> 
    <p> 
     <%= f.file_field :image %> 
    </p> 
    <p> 
     <%= f.label :remote_image_url, "or image URL" %><br /> 
     <%= f.text_field :remote_image_url %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

gallery.rb

class List < ActiveRecord::Base 
    attr_accessible :description, :image, :remote_image_url 

    validate :validate_image_fields 

    def validate_minimum_image_size 
    # how do i determine if it is a remote image or local image? 
    end 

ありがとうございました!

答えて

2

「1つのボックスのみが満たされている」と言うので、remote_urlが送信されたのか、ローカルファイルがアップロードされたのかを特定できます。

def validate_image_fields 
    if remote_image_url.present? 
    # condition/validations for the image url 
    elsif image 
    # condition/validations for uploaded image 
    else 
    errors.add(:base, "No image url or local image provided") 
    end 
end 

これはあなたが探していたものですか?私はあなたが正しいことを願っています。

関連する問題