"Yes" is the short answer, but I was hoping that explaining more about it you'd get a little more out of my answer.
Cheers, Richard On Sep 27, 5:28 pm, richardun <richar...@gmail.com> wrote: > Yourvalidationerrormessage is coming from your model. In your > model, you have something like this: > > class MyModel < ActiveRecord::Base > > ... > > validates_presence_of :msg, :message => "can't be blank" > > ... > > end > > When you submit a form you are validating that the message someone > enters in the column field you created in your database, which is > called "msg" actually has something in it (validates_presence_of). > Here, we're saying when someone submits a form and the "msg" field is > empty, give them thiserror: > > <name of column> can't be blank > > The name of the column here is "msg." But you don't want to display > that in yourerrorback to the client. You want it to say something > nice like "Message can't be blank" not "msg can't be blank." > > So, in my method, we take the same model we have above and add the > humanize mapping. > > class MyModel < ActiveRecord::Base > > ... > > validates_presence_of :msg, :message => "can't be blank" > > HUMANIZED_COLUMNS = {:msg => "Message"} > > def self.human_attribute_name(attribute) > HUMANIZED_COLUMNS[attribute.to_sym] || super > end > > end > > With that method, you're just mapping a hash of symbols (in this case > you just have one - :msg) and modifying the human_attribute_name > method that rails uses when displaying thevalidationerror. You see, > when thevalidationfails (the value for the field was not present) it > spits out theerrorcontaining the (humanized version) of the column > name with the :message you gave it. Thevalidationerroris always > humanizing the column name, but it can't make much of "msg" so it > leaves it alone. I always suggest giving column names (in your > database / model) when you set it up to be good column names it can > humanize. But, if you have to have one like "msg," then you can work > around it when it tries to humanize it. > > To break down the method just a little, "human_attribute_name" is a > method in ActionRecord, but it's present here since your class > "MyModel" inherits from ActionRecord::Base. You are essentially > modifying it by "def"ining it here. You're just saying, when you > "humanize" a column, for whatever reason, see if the column name is in > my hash "HUMANIZED_COLUMNS" and use that value instead of the column > name you're going to try to humanize. > > Hope that helps, > Richard > > On Sep 26, 4:52 pm, bgumbiker <bogumil.bial...@gmail.com> wrote: > > > THanks Richard, > > Could you post any further usage example as I am quite new in Ruby and > > Rails and do not understand what happening below in your code. Is :msg > > anattributein the model? > > thanks, > > bogumbiker > > > On Sep 26, 11:20 pm, richardun <richar...@gmail.com> wrote: > > > > Actually, bgumbiker, I just posted this answer yesterday so a bit more > > > searching might have produced an > > > answer.http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/... > > > > If you used Ranjan's answer, you'll have to enter a specific custom > > > message for eachvalidationyou do. If you use the solution I > > > outlined in that URL or below, you change the "humanization" version > > > of that column name so you can do validations as normal and when the > > > human name is used to display anerrormessage, it'll use the one you > > > mapped. > > > > class Post < ActiveRecord::Base > > > > HUMANIZED_COLUMNS = {:msg => "Message"} > > > > def self.human_attribute_name(attribute) > > > HUMANIZED_COLUMNS[attribute.to_sym] || super > > > end > > > end > > > > Richard > > > > On Sep 26, 5:50 am, ranjan kumar <ranjankumar...@gmail.com> wrote: > > > > > Try this > > > > > class User < ActiveRecord::Base > > > > validate do |user| > > > > user.errors.add_to_base("This is my custom message") if user. > > > > attribute_name.blank? > > > > end > > > > end > > > > > On Sat, Sep 26, 2009 at 2:52 PM, bgumbiker > > > > <bogumil.bial...@gmail.com>wrote: > > > > > > Hello, > > > > > Any idea how to removeattributename fromvalidationerrormessages? > > > > > thanks, > > > > > bogumbiker > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---