(Rails) Есть ли способ проверить тип данных поля? - PullRequest
25 голосов
/ 11 августа 2009

Как проверить тип данных для чего-то, что было извлечено из базы данных?

Например, если у меня есть несколько экземпляров модели @model с полем базы данных "title", я хочу иметь возможность кодировать что-то вроде @ model.title.type и вернуть его "String". Есть ли в Rails какие-либо встроенные функции для этого?

Ответы [ 2 ]

40 голосов
/ 11 августа 2009

Попробуйте это:

@model.column_for_attribute('title').type

Должен вернуть :string, :text, :integer и т. Д.

ActiveRecord Столбец Класс также включает в себя ряд других атрибутов: по умолчанию, предел, имя, ноль, точность, первичный, масштаб, sql_type, тип.

12 голосов
/ 27 марта 2013

В Rails 3 для моей модели "Фирма" я бы использовал Firm.columns_hash.

Firm.columns_hash["name"].type  #returns :string

Если вы хотите просмотреть их, вы должны сделать что-то вроде этого:

Firm.columns_hash.each {|k,v| puts "#{k} => #{v.type}"}

, который выдаст следующее:

id => integer
name => string
max_trade_qty => integer

и т. Д.

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