Я столкнулся с странным поведением в создании экземпляров модели rails3.Rails 3, почему Model.new делает неявное преобразование?
Итак, у меня есть простая модель:
class MyModel < ActiveRecord::Base
validates_format_of :val, :with => /^\d+$/, :message => 'Must be an integer value.'
end
Тогда простой контроллер:
def create
@mod = MyModel.new(params[:my_model])
if @mod.save
...
end
end
первый, params[:my_model].inspect
возвращается:
{:val => 'coucou :)'}
Но после вызова @mod = MyModel.new(params[:my_model])
...
Теперь, если я называю @mod.val.inspect
я получу:
0
Почему я не получаю исходную строку?
В конце концов Подтверждает успех, потому что val
действительно целый ...
Является ли это потому, что val
определяются как целое число в базе данных?
Как я могу избежать такого поведения и позволить валидации выполнять свою работу?
Спасибо :)