Как избавиться от этой ситуации в моём модельном классе - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть ActiveRecord " Car " модель:

class Car < ActiveRecord::Base

  def check_value
     puts self.load_size #if user input is an alphabet letter, I got 0.0 here
  end
  ...
end

Существует атрибут " load_size " в модели " Car ", а в базе данных столбец " load_size " равен double тип столбца.

Интересно, что в пользовательском интерфейсе, если пользователь вводит буквы алфавита (например, 'a') в поле ввода " load_size ", моя модель автоматически преобразует этот алфавит в значение 0.0

Другими словами, если мой CarsController.rb делает что-то вроде Car.new({:load_size=>params[:load_size]}), а пользовательский ввод params[:load_size] равен " a ", в модели я получил self.load_size равно 0,0

В связи с вышеизложенным у меня есть следующие два вопроса:

Q1 . Это потому, что мой «load_size» в базе данных является «двойным» типом, поэтому в модель автомобиля , когда я получаю доступ к self.load_size, рельсы автоматически преобразуют значение алфавита в 0,0 ?

Q2 . Поскольку я определил метод проверки в модели «Автомобиль», я хотел бы получить исходное значение пользовательского ввода (например, «a») без какого-либо преобразования. Как от этого избавиться? Как получить введенное пользователем значение, не преобразованное 0.0?

1 Ответ

0 голосов
/ 05 апреля 2011

Q1. Значение, вероятно, преобразуется в 0.0 во время ввода, а не при обращении к нему.

Q2. Вам нужно изменить тип поля на строковый тип, чтобы иметь возможность хранить в нем текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...