Как сгенерировать модель с таблицей с именем «document» со столбцом id: int, file: blob, status: enum, exp_date: datetime? - PullRequest
0 голосов
/ 03 мая 2020

Я использую Rails 6 с ActiveStorage. У меня есть таблица «Пользователь», «Подписчик», «Подпись», «Подпись_шаблон», «Должность» и «Документ». У меня есть таблица также с именем «signature_template» со столбцом user_id: int, file: blob (это мой вопрос к документу), create_at: datetime и updated_at: datetime.

1 Ответ

1 голос
/ 03 мая 2020

вы можете создать из своего терминала

rails generate model Document 

и затем добавить файл миграции следующим образом:

create_table :documents do |t|
  t.binary :file
  t.integer :status, default: 0
  t.datetime :exp_date
end

rails автоматически создаст идентификатор, поэтому вам не нужно его создавать

для двоичного типа зависит от вашей системы баз данных, здесь приведено сопоставление для некоторой известной системы баз данных

  • Система баз данных Mysql будет создана как blob,
  • Postgres -> bytea
  • SQLite -> blob
  • Oracle -> blob

для перечисления вы можете создать как целое число, но затем в вашей модели документа Вы должны предоставить следующую информацию (измените статус в соответствии с вашими потребностями)

class Document < ApplicationRecord
  enum status: %i(draft verified published)
...
end

и вот некоторые подробности о типе колонны в рельсах для вашего типа документации

+-------------+---------------------------------------------------------------+
| column type |                        Description                            |
+-------------+---------------------------------------------------------------+
| :string     | Limited to 255 characters by default, Might be case-sensitive |
| :text       | Generally unlimited length depending on database              |
| :integer    | Whole number, in contrast to :decimal or :float.              |
| :decimal    | Stored with specified precision. Use for math accuracy.       |
| :float      | Floating-point decimal number with fixed precision            |
| :boolean    | True or false.                                                |
| :binary     | Raw chunks of data saved in database-specific way.            |
| :date       | Year, month and day (no time).                                |
| :time       | Hours, minutes, seconds (no date).                            |
| :datetime   | Date and time stored together.                                |
| :timestamp  | Exactly the same as :datetime on Rails.                       |
+-------------+---------------------------------------------------------------+
...