Взгляните на метод, который вы нашли, на примере класса:
> Post.columns.last
=> #<ActiveRecord::ConnectionAdapters::PostgreSQLColumn:0x007feee6bc2320
@array=false,
@cast_type=
#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x007feee6bd36c0
@limit=nil,
@precision=nil,
@range=-2147483648...2147483648,
@scale=nil>,
@default="1",
@default_function=nil,
@name="max_likes",
@null=false,
@sql_type="integer">
Скажем, есть 12 сообщений.
> Post.count
=> 12
Все значения на columns
доступны и могут быть использованы для ограничения результатов.
> Post.columns.count { |c| c.name == 'max_likes' }
=> 1
> Post.columns.count { |c| c.sql_type == 'integer' }
=> 5
> Post.columns.count { |c| c.precision == nil }
=> 12
> Post.columns.count { |c| c.default == "1" }
=> 2
После того, как вы фильтруется, вы можете делать все, что вам нужно с выбранной колонки:
> Post.columns.select { |c| c.name == 'max_likes' }.each do |c|
puts c.sql_type
end
=> integer