Forum: Ruby on Rails mysql error on scoped find_or_create_by_attr

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
klochner (Guest)
on 2009-03-23 19:36
(Received via mailing list)
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')
Jeff E. (Guest)
on 2009-03-23 20:12
(Received via mailing list)
The name 'foobar' exists already?
klochner (Guest)
on 2009-03-23 20:16
(Received via mailing list)
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")
This topic is locked and can not be replied to.