smallint не работает для создания модели и рельсов таблицы 3+ postgreSQL

сначала я запустил эту команду

rails generate model FeedbackComment type:smallint reply:text

после этого

rake db:migrate 

я получаю эту ошибку

StandardError: An error has occurred, this and all later migrations canceled:

undefined method `smallint' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0x9d1a318>/var/www/blog/db/migrate/20140712064127_create_feedback_comments.rb:4:in `block in change'

Как я могу создать smallint с помощью команды в postgreSQL?

Пожалуйста, помогите мне


person Harman    schedule 12.07.2014    source источник
comment
Не существует типа данных smallint, поддерживающего Rails. Дайте тип данных integer с limit.   -  person Pavan    schedule 12.07.2014
comment
Вот так rails generate model FeedbackComment type:integer{2} reply:text.2 bytes of integer есть smallint.   -  person Pavan    schedule 12.07.2014
comment
У вас есть ошибка?   -  person Pavan    schedule 12.07.2014
comment
SyntaxError: /var/www/blog/db/migrate/20140712071128_create_users.rb:4: синтаксическая ошибка, неожиданное ':', ожидание ключевого слова_end t.smallint{2} :reply_type   -  person Harman    schedule 12.07.2014
comment
Можете ли вы опубликовать команду, как вы ее дали?   -  person Pavan    schedule 12.07.2014
comment
ails генерирует модель User answer_type:smallint{2} answer:text   -  person Harman    schedule 12.07.2014
comment
Я сказал дать вот так rails generate model FeedbackComment type:integer{2} reply:text. integer не smallint.   -  person Pavan    schedule 12.07.2014


Ответы (2)


Как я уже сказал, нет smallint, поддерживающего Rails 3. Вы должны использовать integer datatype с limit of 2 bytes, чтобы сделать его smallint.

Список доступных типов данных Rails 3 см. в этом SO. Опубликовать.

Эта команда даст вам то, что вы хотите

rails generate model FeedbackComment type:integer{2} reply:text

См. эту ссылку для расширенных генераторов моделей Rails.

Вот еще полезная информация

:limit     Numeric Type  Column Size    Max value
1          tinyint       1 byte         127
2          smallint      2 bytes        32767
3          mediumint     3 bytes        8388607
nil, 4, 11 int(11)       4 bytes        2147483647
5..8       bigint        8 bytes        9223372036854775807
person Pavan    schedule 12.07.2014

Способ добавления типа данных PostgreSQL smallint в Rails 6, 5 и 4 остается прежним: целочисленный тип данных с ограничением 2.

class AddColumnNameToTableName < ActiveRecord::Migration[6.0]
  def change
    add_column :table_name, :column_name, :integer, limit: 2
  end
end

# => column_name smallint.

person Ivica Lakatoš    schedule 14.10.2020