(Rails) Есть ли способ проверить полевой тип данных?
Как вы проверяете тип данных для того, что было извлечено из базы данных?
Например, если у меня есть некоторый экземпляр модели @model с полем базы данных "title", я хочу иметь возможность кодировать что-то вроде @model.title.type и возвращать "String". У Rails есть встроенные функции для этого?
Ответы
Ответ 1
Попробуйте следующее:
@model.column_for_attribute('title').type
Должны возвращаться :string
, :text
, :integer
и т.д.
Класс ActiveRecord Column также включает в себя ряд других атрибутов: default, limit, name, null, precision, primary, scale, Тип sql_type, тип.
Ответ 2
В 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
и т.д.