В нашей системе есть логическое поле (использующее Rails 3.0.4), и при подключении к MySQL поля сообщают true и false в зависимости от ситуации.При подключении к Oracle (производство) возвращается Fixnum.Столбец имеет тип NUMBER (1).Другие модели правильно возвращают true и false.Контроллер делает простую находку.Это происходит только в шоу-акции.Индекс возвращает true false.Это происходит как для HTML, так и для XML ответов.При запросе типа поля Консоль сообщает о классе FalseClass или TrueClass.Просмотр отчетов Fixnum.
Что может быть не так?
Обновлено: Код
create_table "people", :force => true do |t|
t.string "name"
t.boolean "has_information"
end
class Person < ActiveRecord::Base
has_many :groups
end
Обновлено с более ясным вопросом
Соглашение Rails заключается в том, чтобы сделать поле столбцом типа NUMBER (1).Затем преобразует его в логическое значение в модели.Это работает в нескольких моделях в нашем приложении.Только ОДНА модель имеет эту проблему.И это только проблема в шоу-акции.Действие шоу было создано скаффолдом, поэтому оно очень общее.Почему бы Rails не следовать соглашению в этом одном экземпляре?
Обновлено с решением
Это было исправлено в этом экземпляре путем вызова Person.find_by_id! (params [: id]) вместо Person.find (params [: id]) Почему по умолчанию возвращался неправильный класс для поля в обычном поиске, я не знаю.