Something I've always wondered about rails is the ability to pass extra data to find_or_create methods in rails. For example, I can't do the following
User.find_or_create_by_name('ceilingfish', :email => '[email protected]', :legs => true, :face => false)
I could do
u = User.find_or_create_by_name('ceilingfish')
u.update_attributes(:email => '[email protected]', :legs => true, :face => false)
But that's uglier, and also requires three queries. I suppose I could do
User.find_or_create_by_name_and_email_and_face_and_legs('ceilingfish','[email protected]',true, false)
But that kind of implies that I know what the values of email
, legs
and face
are. Does anyone know if there's a really elegant way of doing this?