Ho un matcher shoulda nel mio avatar_parts_spec.rb e non riesco a passare:Non è possibile ottenere l'unicità passaggio test di convalida con shoulda matcher
prova:
require 'rails_helper'
RSpec.describe AvatarPart, :type => :model do
it { should validate_presence_of(:name) }
it { should validate_presence_of(:type) }
it { should validate_uniqueness_of(:name).case_insensitive }
it { should belong_to(:avatar) }
end
Modello:
class AvatarPart < ActiveRecord::Base
attr_accessible :name, :type, :avatar_id
belongs_to :avatar
validates_uniqueness_of :name, case_sensitive: false
validates :name, :type, presence: true, allow_blank: false
end
migrazione:
class CreateAvatarParts < ActiveRecord::Migration
def change
create_table :avatar_parts do |t|
t.string :name, null: false
t.string :type, null: false
t.integer :avatar_id
t.timestamps
end
end
end
Errore:
1) AvatarPart should require unique value for name
Failure/Error: it { should validate_uniqueness_of(:name).case_insensitive }
ActiveRecord::StatementInvalid:
SQLite3::ConstraintException: NOT NULL constraint failed: avatar_parts.type: INSERT INTO "avatar_parts" ("avatar_id", "created_at", "name", "type", "updated_at") VALUES (?, ?, ?, ?, ?)
Quale potrebbe essere la causa dell'errore?
Edit: Github repo: https://github.com/preciz/avatar_parts
A volte questo sembra essere necessario, a volte no. Strano. –
Perché qui è richiesto "case_insensitive"? –
@VishalVijay Questo era nella domanda originale, non è una parte particolarmente significativa della risposta. –