Hello, Lets say you''re going to do validates_uniqueness_of on a model''s e-mail address attribute. If the e-mail address already exists how do I tell the model to just do an update instead of redirecting back to the new/create page indicating that the address already exists? I see a callback called after_validation but I''m just not sure how to use it; it indeed it is the method to use. Any help would be much appreciated. Thanks, Binh -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
i find the simplist/DRYist way to do create/update is to use a define
method
in you application controller put the function
def define(object,get?,id,vals)
  if id
     model = Object.const_get(object).find(id)
  else
     model = Object.const_get(object).new
  end
  if not get?
    if id
      model.update_attributes(vals)
    end
    if model.save
      flash[:note] = ''''
    else
      flash[:note] = ''''
    end
  end
  return model
end
then in the child controller you call
@model = super(''model name'', request.get?, params[:id],
params[:model])
lastly you need to edit routs to say
map.connect ''/:controller/edit/:id'', :action =>
''define''
map.connect ''/:controller/create'', :action =>
''define''
-- 
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
 You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
the more important question is why are you validating for uniquness if you are going to update any way? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
oh and if validation fails the after_validation event will not fire -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
hello keynan, thanks for your response. perhaps i''m thinking about the problem in the wrong way then. the scenario is, if a visitor comes back to the site and sign up for a different event, i want to check to see if he''s already in the DB, and if he is i''ll just update his record instead of creating a new one. but, perhaps that shoudl be done at the controller level instead of the model? binh Keynan Pratt wrote:> oh and if validation fails the after_validation event will not fire-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---