validates_uniqueness_of (with :scope) doesn't seem to work?

I have a master record called 'project' and a child record called 'agycode'. Obviously, agycode has a project_id FK. I wish to make the "descr" field unique ONLY within the 'project_id' 'scope'. Here are the key pieces of information

Agycode fields (id, project_id, descr)

Here’s the declaration in the Agycode.rb

validates_uniqueness_of

:descr,

:scope => “project_id”

Here’s the test that SHOULDN’T pass but it does

def test_should_fail_duplicate_descr record1 =

@project.agycodes.** new**(:descr => “description” ) record2 = record1

assert record1.save,

“Save Record” assert_valid(record1)

assert record2.save,

“Save Record” assert_valid(record2)

end

By the way, do you know how one would write the opposite of “assert_valid”?

Thank you,

David

You're saving the same record twice.

The problem line: record2 = record1

This does *not* do a "deep copy" of record1's attributes and create a new object. Instead it just creates a new variable with a reference to the same object that record1 references.

Try: record2 = record1.clone

Note that "clone" doesn't copy associations.