# Validation? Cool... How about before\_save formatting

**URL:** <https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043>\
**Category:** Rails\
**Created:** [August 14, 2007, 4:42pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043 "2007-08-14T16:42:24Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 14, 2007, 4:42pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/1 "2007-08-14T16:42:24Z")

</div>

Hello,

I am trying to define a before\_save method in an object. I would like  
to call a function like sanitize or simple\_format. These are view  
functions. Is there any way, short of writing my own functions, to  
sanitize a user’s text input BEFORE it is saved to the database rather  
than after?

Thanks!

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 14, 2007, 4:51pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/2 "2007-08-14T16:51:25Z")

</div>

Mindtonic wrote:

> 

The ActiveRecord Callbacks for before\_save and before\_create might help:  
[http://railsmanual.com/module/ActiveRecord::Callbacks](http://railsmanual.com/module/ActiveRecord::Callbacks)

Cheers,  
Mohit.  
8/14/2007 | 10:49 PM.

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 14, 2007, 5:00pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/3 "2007-08-14T17:00:27Z")

</div>

Sweet…

What I am looking for are pre-existing methods that I can call from  
within before\_save that will serve the same function as sanitize or  
simple\_format.

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 14, 2007, 5:45pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/4 "2007-08-14T17:45:30Z")

</div>

[http://snipplr.com/view/2505/use-helpers-in-controllers-or-models/](http://snipplr.com/view/2505/use-helpers-in-controllers-or-models/)

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 15, 2007, 12:20pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/5 "2007-08-15T12:20:11Z")

</div>

Thanks! That is exactly what I was looking for.

Singleton no less, very interesting!

I am of the philosophy that you should clean and format before you  
store in the database and this is an excellent way to do it.

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 15, 2007, 6:28pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/6 "2007-08-15T18:28:10Z")

</div>

that snippet is actually a little more verbose than necessary but with  
the benefit of namespacing the methods into help.xxx()

if you wanted you could simply require the ActionView helper module in  
your application.rb:  
include ActionView::Helpers::TextHelper

and that’s it… just call “sanitize(‘whatever’)” in your controllers  
directly

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 15, 2007, 8:09pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/7 "2007-08-15T20:09:45Z")

</div>

> I am of the philosophy that you should clean and format before you  
> store in the database and this is an excellent way to do it.

IMHO it is a gigantic deficiency of Rails that there is not an  
out-of-the-box way to do this. h() is good but why filter output in 100  
places when you can filter input once?

---

<div class="post-metadata">

**Author:** ![mindtonic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f19dbf/32.png) [@mindtonic](https://www.ruby-forum.com/u/mindtonic)\
**Post date:** [August 16, 2007, 11:43pm UTC](https://www.ruby-forum.com/t/validation-cool-how-about-before-save-formatting/112043/8 "2007-08-16T23:43:23Z")

</div>

> IMHO it is a gigantic deficiency of Rails that there is not an  
> out-of-the-box way to do this. h() is good but why filter output in 100  
> places when you can filter input once?  
> well, you can… exactly as described above or write your own  
> methods. IMHO it’s not rails’ place to do this automatically - you  
> might want to have those special characters in the db.
