Rails: Почему мое логическое поле возвращает Fixnum? - PullRequest
1 голос
/ 26 октября 2011

В нашей системе есть логическое поле (использующее 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]) Почему по умолчанию возвращался неправильный класс для поля в обычном поиске, я не знаю.

Ответы [ 3 ]

0 голосов
/ 26 октября 2011

В Oracle нет типа BOOLEAN.Обычно мы используем поля CHAR (1), ограниченные значениями «Y» и «N».YMMV.

Делись и наслаждайся.

0 голосов
/ 29 октября 2011

Ответ. Обновите Адаптер Oracle, поскольку он устарел.В версии 1.3.0 камня activerecord-oracle_enhanced-adapter есть ошибка, о которой было сообщено:

https://github.com/rsim/oracle-enhanced/issues/7

Мы обновили драйвер, и теперь все работает как положено.

0 голосов
/ 26 октября 2011

Флажок, отправленный обратно из представления, будет числом, равным «0» или «1», в зависимости от того, снят ли флажок или установлен соответственно.Вам нужно будет преобразовать это в вашей модели в значение false или true, если это требуется для вашего адаптера БД.

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