Mysql error on scoped find_or_create_by_attr


#1

Anyone have insight on this one?

class Parent
has_many :children
end

add_index “children”, [“parent_id”, “name”], :name =>
“by_parent_name”, :unique => true

a = Parent.find(1)
a.children.find_or_create_by_name “foobar”

Mysql::Error: Duplicate entry ‘foobar’ for key 2: INSERT INTO
children (name, updated_at, parent_id, created_at) VALUES
(“foobar”, ‘2009-03-23 17:25:39’, 1, ‘2009-03-23 17:25:39’)


#2

The name ‘foobar’ exists already?


#3

but the point is that it’s a find_or_create, and the index is on
[:parent_id,:name],
so it should just find the record if it’s a duplicate.

Also, the following worked:

Child.find_or_create_by_parent_id_and_name(1,“foobar”)