Okay, so i've got paperclip working, and I'm trying to use the built in validator to make sure that the file uploaded
So I have this in the model, per the documentation:
validates_attachment :avatar,
:content_type => { :content_type => /image/ },
:size => { :in => 0..2.megabytes }
However the error it shows in the view is this mess:
I'd like it to be something a bit simpler, like "Avatar must be an image less than 2 megabytes"
However, I can't see where to do this, as passing :message => 'something'
throws an error Unknown validator: 'MessageValidator'
How do I go about cleaning this up?
Note that the happy path of uploading a small image works just fine.
Some further testing shows that uploading an image that's too big (like a desktop background) or something that's not a .rb file fails more gracefully, but doesn't display any error message at all. Still not quite what I want.
Obviously you solved this for yourself a long time ago, but for anyone who is looking for the answer, there is actually a way to do it within the provided validation.
Simple add your message like so:
validates_attachment :avatar,
:content_type => { :content_type => /image/, :message => "Avatar must be an image" },
:size => { :in => 0..2.megabytes, :message => "Avatar must be less than 2 megabytes in size" }
I ended up writing two custom validators. It's true that these do the same thing the paperclip validators do, but they fail prettier:
def avatar_is_a_image
if self.avatar?
if !self.avatar.content_type.match(/image/)
errors.add(:avatar, "Avatar must be an image")
end
end
end
def avatar_is_less_than_two_megabytes
if self.avatar?
if self.avatar.size > 5.megabytes
errors.add(:avatar, "Avatar must be less than 5 megabytes in size")
end
end
end
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.