Введенное целое число не воспринималось как число в rails 3.1.0

В нашем приложении rails 3.1.0 возникает странная ошибка при сохранении новой цитаты в контроллере котировок. Котировка принадлежит rfq, а rfq 18 был передан в контроллер котировок. Ошибка:

Validation failed: Quoted total is not a number

Отображаемые параметры:

{"utf8"=>"✓",
 "authenticity_token"=>"p9waUq7wNk6djm9uRtDOA0eHLzzlJuSCWrTsSEBvcck=",
 "quote"=>{"test_item_ids"=>["1",
 "2"],
 "_destroy"=>"false",
 "quoted_total"=>"290"},
 "commit"=>"Save",
 "rfq_id"=>"18"}

Как видно, quoted_total равно 290. Но почему-то оно не было распознано как число.

Вот код создания в контроллере котировок:

    @quote = @rfq.quotes.new(params[:quote], :as => :roles_new)
    @quote.input_by_id = session[:user_id]
    @quote.test_items =  TestItem.find_all_by_id(params[:quote][:test_item_ids]) 
    if @quote.save!
      redirect_to URI.escape("/view_handler?index=0&msg=quote saved!")
    else
      flash.now[:error] = "Not saved!"
      render 'new'
    end

Ошибка вызвана @quote.save. Код rspec для контроллера котировок имеет ту же ошибку. Что вызвало ошибку? Большое спасибо.


person user938363    schedule 02.02.2012    source источник


Ответы (1)


Я предполагаю, что вы проверяете quoted_total как число в своей модели, на самом деле params[:quoted_total] является строкой.

person Richie Min    schedule 02.02.2012
comment
да, как: validates_numericality_of :quoted_total, :greater_than => 0,00. Но все данные, возвращаемые параметрами, являются строками, и модель знает, как их преобразовать. - person user938363; 02.02.2012
comment
Нашел проблему! это вызвано неправильным именем в attr_accessible. quoted_total отсутствует в атрибуте attr_accessible, поэтому его значение не может быть передано. - person user938363; 02.02.2012