Find_or_create_by_foo_and_bar error (duplicate entry)


#1

I’m throwing sql errors on a User.find_or_create_by_foo_and_email
call.

I created an index with the following:
add_index “users”, [“foo_id”, “email”], :name =>
“by_foo_email”, :unique => true

Then in a class foo instance method:

user = User.find_or_create_by_foo_id_and_email
(self.id,some_email_address)

and I get this error:
ActiveRecord::StatementInvalid (Mysql::Error: Duplicate entry
‘removed_email_address@domain.invalid’ for key 2: : INSERT INTO users (name,
unsubscribed, updated_at, unsubscribed_date, user_id,
bounce_date, foo_id, email, created_at, bounced) VALUES
(NULL, 0, ‘2009-03-31 16:04:51’, NULL, NULL, NULL, 11,
‘removed_email_address@domain.invalid’, ‘2009-03-31 16:04:51’, 0)

Isn’t find_or_create_by() supposed to only create if it can’t find?

caveat - I’m running this with workling/starling.


#2

On Wed, Apr 1, 2009 at 10:18 AM, klochner removed_email_address@domain.invalid wrote:

user = User.find_or_create_by_foo_id_and_email
Isn’t find_or_create_by() supposed to only create if it can’t find?
I think that’s just for the primary key.


Greg D.
http://destiney.com/