When a user tries to create a record with a name that already exists, I want to show an error message like:
name "some name" has already been taken
I have been trying to do:
validates_uniqueness_of :name, :message => "#{name} has already been taken"   but this outputs the table name instead of the value of the name attribute
2 things:
%{value} value rather than name, because in the context of internationalization, you don't really care about the rest of the model.So your code should be:
validates_uniqueness_of :name, :message => '%{value} has already been taken' 
                        It looks like you can pass a Proc to the message. When you do this, you get two parameters:
:activerecord.errors.models.user.attributes.name.taken So if you allow for two parameters on a proc, you can use the attributes[:value] item to get the name that was used:
validates_uniqueness_of :name,                          :message => Proc.new { |error, attributes|                            "#{attributes[:value]} has already been taken."                          } 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With