我正在使用回形针来拍摄图像。我想确保只上传图像文件(jpeg/png)。这是我的回形针验证规则。
validates_attachment :photo, :presence => { :message => "is required" }, :content_type => { :content_type => ['image/jpeg', 'image/jpg', 'image/png'], :message => "Invalid content type" }
如果用户上传非图像文件,则验证有效并且不会保存记录。但是错误消息存储在 @news.errors.messages[: photo_content_type ] 而不是 @news.errors.messages[: photo ]
我正在使用客户端验证 gem 来显示错误消息。由于无效的内容类型消息附加到 : photo_content_type,它不会内联显示。
现在我显示的消息如下:
<% if @news.errors.messages[:photo_content_type] %>
<div class="field_with_errors">
<%= f.file_field :photo %>
<label for="" class="validation-error-message">
<%= @news.errors.messages[:photo_content_type][0] %>
</label>
</div>
<% else %>
<%= f.file_field :photo %>
<% end %>
有没有更好的方法,如果用户上传非图像文件,消息会被添加到 @news.errors.messages[:photo]
我在验证回调后添加的更新:
after_validation :join_img_errors
def join_img_errors
if errors.messages.has_key?(:photo_content_type)
errors.messages[:photo] = errors.messages[:photo_content_type]
end
end
这样,我不必修改视图代码。但是我仍然需要为所有使用回形针的模型添加回调。