It seems like AR is auto-converting the string from form into an
integer (for an attribute of an integer column). However, for custom
validation I don't want it to do this - I want to have access to the
actual string.
I create the model like this:
@model = Model.new(params[:model])
Yet, in Model, logger.info column_name shows 5
(params[:model][:column_name] = 5.6).
You should use column_name_before_type_cast reader to get raw data that user
has supplied. It is described in AR docs:
= Accessing attributes before they have been typecasted
...
This is especially useful in validation situations where the user might supply
a string for an integer field and you want to display the original string
back in an error message. Accessing the attribute normally would typecast the
string to 0, which isn’t what you want.