2 almost identical tests need different assertions to work and I can't figure out why

Hey everyone, I am learning bdd and do deffently like it on the whole. I
ran into a strange situation I got around it but it left a question in
my mind and I would appreciate help in removing it :wink:

So hear is what happened

test for one model:

it “Should protect id from mass assignment” do
attributes = @user.attributes
attributes[‘id’] = 42
lambda do
User.create(attributes).id.should_not equal 42
end.should raise_error ActiveModel::MassAssignmentSecurity::Error
end

passes

test for another model

it “Should not allow ID to be mass assigned” do
attributes = @dispensary.attributes
attributes[‘id’] = 42
disp = Dispensary.create( attributes )
disp.id.should_not equal 42
end

also passes

if I write a similar test for the first one instead of checking the
exception like

[code]
it “Should not allow ID to be mass assigned” do
attributes = @dispensary.attributes
attributes[‘id’] = 42
disp = Dispensary.create( attributes )
disp.id.should_not equal 42
end

Rspec stops because an error was raised. I am confused what variable am
I missing thank you