Проверка модели из миграции - Ruby on Rails - PullRequest
0 голосов
/ 29 апреля 2018

Новичок в Ruby on Rails

У меня есть таблицы в базе данных PostgreSql. Мне удалось вывести схему из существующей базы данных в схему Ruby и перенести ее (что сэкономило мне много времени)

Теперь мне интересно, есть ли способ реализовать проверку модели из проверки миграции. У меня есть проверки данных, реализованные на полях таблицы. Я хочу реализовать те же проверки в модели. Есть ли способ сделать это с минимальными кодами, или мне нужно вручную создавать проверки в каждой модели?

Например:

create_table "corporates", id: :serial, force: :cascade do |t|
   t.string "corporate_no", limit: 13, null: false
   t.string "corporate_name", null: false
   t.boolean "active", default: true
   t.datetime "created_at"
   t.datetime "updated_at"
   t.index ["corporate_no"], name: "corporates_corporate_no_key", unique: true
end

Теперь я хочу реализовать эту проверку в моей модели как

class Corporate < ApplicationRecord
   validates :corporate_no, presence: true, limit: 13
   validates :corporate_name, presence: true
   validates :active, default: true
end

P.S. Эти проверки моделей могут быть ошибочными. Я сказал, что я начинающий?

Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2018

Вряд ли в Rails есть что-то нестандартное.

Но я нашел гем schema_validations , который, вероятно, делает то, что вы ищете.

Единственное отличие состоит в том, что этот драгоценный камень следует сухому подходу и не генерирует проверки в модели. Например, у вас есть users таблица:

create_table :users do |t|
  t.string :email, null: false, limit: 30
  t.boolean :confirmed, null: false
end

Этот камень не будет генерировать проверки, как вы ожидаете:

class User < ActiveRecord::Base
  validates :email, presence: true, length: { maximum: 30 }
  validates :confirmed, presence: true, inclusion: { in: [true, false] }
end

У вас все еще будет чистая User модель, но поля проверены:

class User < ActiveRecord::Base
end

И его можно настроить, если вам не нужны проверки для каждой модели.

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