Ошибка проверки уникальности Rails SQL3 - PullRequest
0 голосов
/ 19 января 2019

Я работаю над сайтом и создал файл миграции, чтобы сделать атрибут имени для элемента уникальным. Я добавил проверки для проверки уникальности, но все мои тесты вызывают «ActiveRecord :: RecordNotUnique: SQLite3 :: ConstraintException: ограничение UNIQUE не выполнено».

Вот мои миграционные файлы

class AddIndexToProduct < ActiveRecord::Migration[5.1]
  def change
    add_index :products, :name, unique: true
  end
end

class CreateProducts < ActiveRecord::Migration[5.1]
  def change
    create_table :products do |t|
      t.string :name
      t.float :price
      t.integer :inventory

      t.timestamps
    end
  end
end

Вот мои проверки

  validates :name, presence: true, length: {maximum: 15}, uniqueness: {case_sensitive: false}
  validates :price, presence: true, length: {maximum: 15}
  validates :price, presence: true, numericality: {only_float: true, greater_than: 0, less_than: 10000}
  validates :inventory, presence: true, numericality: {only_integer: true, greater_than: 0, less_than: 10000}

Вот мои модельные тесты

  def setup
    @product = Product.new(name: "Bannana", price: 1.96, inventory: 3)
  end

  test "valid product" do
    assert @product.valid?
  end

  test "products should be unique" do
    duplicate_product = @product.dup
    duplicate_product.name = @product.name.upcase
    @product.save
    assert_not duplicate_product.valid?
  end

  test "check if we can add a product with a negative price or zero" do
    @product.price = -20
    assert_not @product.valid?
    @product.price = 0
    assert_not @product.valid?
  end

  test "check if we can add a product without a name, price, or quantity" do
    @product.name = "     "
    assert_not @product.valid?
    @product.price = nil
    assert_not @product.valid?
    @product.inventory = nil
    assert_not @product.valid?
  end

  test "check if name is too long" do
    @product.name = "This name for a product is way too long for meeeee"
    assert_not @product.valid?
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...