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