确定是否在CarrierWave(RoR)中上载了远程图像URL或图像

时间:2012-03-13 05:34:26

标签: ruby-on-rails carrierwave

目前在我的应用程序中,我有两个可能的文本框。一个用于本地图像上载,另一个用于远程图像URL。我确保如果用户选择本地图像文件,则“远程图像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

谢谢!

1 个答案:

答案 0 :(得分:2)

由于您说'只填充了一个框',您可以识别是否提交了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

这是你在找什么?我希望我能帮到你。