В моем проекте есть следующие файлы:
миграция:
create_table :stores do |t|
t.string :slug, null: false, index: { unique: true }
t.string :name, null: false, index: { unique: true }
t.text :description, null: false
t.timestamps
end
модель:
class Store < ApplicationRecord
validates :slug,
presence: true,
uniqueness: true,
length: { minimum: 2, maximum: 36 },
allow_blank: false
validates :name,
presence: true,
uniqueness: true,
length: { minimum: 2, maximum: 64 },
allow_blank: false
validates :description,
presence: true,
length: { minimum: 0, maximum: 1024 },
allow_blank: true
end
Когда я запускаю rails c
и выполняю следующую строку кода:
Store.new(slug: 'blah', name: 'Blah').valid?
// returns true
возвращает true, но когда я пытаюсь его сохранить
Store.new(slug: 'blah', name: 'Blah').save
// fails to save, NOT_NULL constraint failed
не удается сохранить, из-за сбоя NOT_NULL constraint
.
Почему valid?
не возвращает false
, если нет поля description
и существует проверка, требующая его присутствия в модели?
Ruby Версия : 2.7.0
Rails Версия: 6.0.2.1