has_many :through questions

I've created the following associations using :through:

    class Person < ActiveRecord::Base
      has_many :attendees, :dependent => :destroy
      has_many :events, :through => :attendees, :uniq => true
    end

    class Event < ActiveRecord::Base
      has_many :attendees, :dependent => :destroy
      has_many :people, :through => :attendees, :uniq => true
    end

    class Attendee < ActiveRecord::Base
      belongs_to :event
      belongs_to :person
    end

The database tables are as follows:

ActiveRecord::Schema.define(:version => 3) do

  create_table "attendees", :id => false, :force => true do |t|
    t.column "event_id", :integer
    t.column "person_id", :integer
    t.column "bit_flags", :integer
  end

  add_index "attendees", ["event_id"], :name =>
"index_attendees_on_event_id"
  add_index "attendees", ["person_id"], :name =>
"index_attendees_on_person_id"

  create_table "events", :force => true do |t|
    t.column "name", :string
    t.column "description", :text
    t.column "event_date", :date
    t.column "start_time", :time
    t.column "end_time", :time
    t.column "last_register_date", :date
    t.column "location_city", :string
    t.column "location_state", :string, :limit => 2
    t.column "location_zip", :string, :limit => 9
    t.column "location_addr", :text
    t.column "agenda", :text
    t.column "contacts", :text
  end

  create_table "people", :force => true do |t|
    t.column "first_name", :string
    t.column "last_name", :string
    t.column "title", :string
    t.column "organization", :string
    t.column "email", :string
    t.column "phone1", :string
    t.column "phone2", :string
  end

end

I wanted to use the following method which the documentation indicates
is available for has-many associations. (See (http://
rails.rubyonrails.com/classes/ActiveRecord/Associations/
ClassMethods.html) :

    collection=objects - replaces the collections content by deleting
and adding objects as appropriate.

That's because I want to eliminate redundant join records, i.e., there
should be only one record in the attendees table that contains the
combination of event_id=1 and person_id=1. I took "deleting and
adding objects _as appropriate_" to mean that. Is this true?

Secondly, trying this code in class PeopleController:

    @person.events = Event.find(@params[:event_ids]) if
params[:event_ids]

resulted in the following error:

    undefined method `events=' for #<Person:0x6836228>

So, did I get something wrong or is this method not available
with :through associations?

If not available, is there another (best?) method or combination that
would maintain the attendees table so that event_id + person_id
combinations are unique?

btw, I also tried the following:

    @person.events << Event.find(params[:event_ids]) if
params[:event_ids]

It works, but adds (appends) join records without regard to
uniqueness.

Thanks,
Stan

I solved as follows (not sure it's the best approach):

  def create
    @person = Person.new(params[:person])
    @events = params[:event_ids] if params[:event_ids]

    # Create attendee record for each selected event
    if @person.save
      if @events != nil then
        @events.each { |event|
          @person.events.push (Event.find(event))
        }
      end
      flash[:notice] = 'Person was successfully created.'
      redirect_to :action => 'list'
    else
      render :action => 'new'
    end
  end

  def update
    @person = Person.find(params[:id])
    @events = params[:event_ids] if params[:event_ids]
    if @events != nil then
      @events.each { |event|
        if !Attendee.exists?(:person_id => @person, :event_id => event)
          @person.events.push (Event.find(event))
        end
      }
    end

    if @person.update_attributes(params[:person])
      flash[:notice] = 'Person was successfully updated.'
      redirect_to :action => 'show', :id => @person
    else
      render :action => 'edit'
    end
  end