Relacja wiele do wielu

Raczkuję w rails i mam pytanie do grona Ralis-wyjadaczy.

Mam relacje wiele do wielu: authors i books.

[code]ActiveRecord::Schema.define(:version => 20100219154011) do

create_table “authors”, :force => true do |t|
t.string “name”
t.string “surname”
end

create_table “authors_books”, :id => false, :force => true do |t|
t.integer “author_id”
t.integer “book_id”
end

create_table “books”, :force => true do |t|
t.string “title”
t.string “polish_title”
t.string “publisher”
t.string “place”
t.integer “year”
t.string “nr_edition”
t.string “translator_name”
t.string “translator_surname”
end

end[/code]
Chcę aby użytkownik dodawał tworząc nowy egzemplarz książki określił, kto jest jej autorem. Więc w pliku new.html.erb dałem

<%for author in Author.find(:all) %> <%=check_box_tag "book[author_ids][]", author.id, @book.authors.include?(author)%> <%="#{author.name} #{author.surname}"%><br/> <%end%>
Co muszę napisać w kontrolerze book_controller.rb?
Czy aby mi to prawidłowo zadziałało wystarczy, że dam
def create
@book = Book.new(params[:book])

@book.author_ids=params[:book][:author_ids]||=[]

respond_to do |format|
  if @book.save
    flash[:notice] = 'Book was successfully created.'
    format.html { redirect_to(@book) }
    format.xml  { render :xml => @book, :status => :created, :location => @book }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @book.errors, :status => :unprocessable_entity }
  end
end

end

Jeśli relacja wiele do wielu to moze accepts_neasted_attributes zadziała ? Próbowałem tylko z 1 do wielu

http://railscasts.com/episodes/196-nested-model-form-part-1

Sprawdź może, czy w modelach masz zdefiniowane relacje, coś mniej więcej takiego:

[code]class Author < ActiveRecord::Base
has_many :authors_books
has_many :books, :through => “authors_books”
end

class AuthorsBook < ActiveRecord::Base
belongs_to :author
belongs_to :book
end

class Book < ActiveRecord::Base
has_many :authors_books
has_many :authors, :through => “authors_books”
end[/code]
Sam jestem mocno początkujący w RoR, wydaje mi się, że jedną z kluczowych kwestii w początkowej fazie Railsowania jest zrozumienie co dokładnie robi linia kontrolera:

@book = Book.new(params[:book])

mam nadzieję że nie nakłamię za bardzo, generalnie chodzi o to, że framework przetwarza parametry przekazywane przez formularz HTML (ten wygenrowany form_for w widoku) tak aby pasowały jako parametry wejściowe konstruktora klasy modelu. W ten sprytny sposób omija się potrzebę ręcznego przepisywania wszystkich pól z widoku do modelu.

Jak wygląda hash z parametrami można podejrzeć w logu.