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.