Как заставить Ruby найти модель, выбрать целочисленное значение для столбцов целых чисел? - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть модель, назовем ее «Пользователь».У него есть поле с именем age, и оно имеет тип int

Когда я делаю:

user = User.find(:all, :select => "age").first
age = user.age

, я получаю возраст в виде строки, даже если это целочисленный столбец.

Я знаю, что могу легко сделать age.to_i, чтобы получить целое число, но иногда я забываю, и это превращается в ошибку вниз по течению, когда я в итоге сравниваю строку с целым числом.

Как мне сделатьнайти и выбрать вернуть фактическое целое число, если столбец является целым числом?Когда я использую User.where, он возвращает фактическое целое число.Я хочу, чтобы User.find вел себя точно так же.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Типизация и многие другие преобразования данных, поступающих из базы данных, могут быть выполнены путем написания метода для соответствующего атрибута и прямого доступа к атрибутам для их преобразования.

class User < ActiveRecord::Base
  def age
    self[:age].to_i
  end
end

User.new(:age => "29").age # => 29

Возможно, вы захотите сделать это при преобразовании строки в символ или, например, использовать BigDecimal для валют. В некоторых случаях также потребуется написание пользовательского метода установки.

Я уверен, что есть драгоценный камень, где вы можете определить типы типов для атрибутов, чтобы эти методы генерировались автоматически для вас.

0 голосов
/ 29 февраля 2012

почему вы используете такую ​​длинную форму? Просто попробуйте сделать это: User.first.age

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