Let's say I have a two models, Event and Person. An event has a coordinator that is a person:
class Event < ActiveRecord::Base
    belongs_to :coordinator, :class_name => 'Person', :foreign_key => 'coordinator_id'
    accepts_nested_attributes_for :coordinator
end
class Person < ActiveRecord::Base
    validates :name, :length => 20
end
In my form, I would 开发者_运维技巧like to let the user pick from existing People objects (let's say a list of radio buttons), but also have a text box to create a new Person (with the name entered in the text box).
How would I elegantly implement this? I can figure it out, but it involves a lot of ugly code in the Controller, and is a pain to validate.
I've done something similar in which the radio buttons set person[id] and then I just checked for the id.
So in my controller#create method:
if params[:person][:id]
   @person = Person.find(params[:person][:id])
else
   @person = Person.new(params[:person])
   #Handle saving @person here.
end
You may have to delete the id param in the elseblock if the form sends it even if nothing is selected.
Edit to answer validation question:
In the #Handle saving @person here. is where you'd do what you normally do for creating an object.  Like: 
if @person.save
  flash[:notice] = "User created successfully"
else
  render :action => 'new' # (or whatever the action is)
  return
end
The validation code on person, will be executed everytime you save a person.
To save bypassing the validator, write @person.save(false).
Hope it integrate the pcg79's answer
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论