HABTM, problem z Create i Find

Witam!

W moim projekcie mam następujące tabele: Projects, Users, Clients. HABTM jest pomiędzy Projects i Users. Modele wyglądają tak:

[code]class Client < ActiveRecord::Base
has_many :projects, :dependent => :destroy

end

class Project < ActiveRecord::Base
has_many :hours, :dependent => :destroy
belongs_to :client
has_and_belongs_to_many :users

end

class User < ActiveRecord::Base
has_many :hours, :dependent => :destroy
has_and_belongs_to_many :projects
end[/code]
project_controller.rb

[code]def create
@project = Project.new(params[:project])
@clients = Client.find(:all)
@user = User.find(:all)

if @project.save
flash[:action_ok] = ‘Project was successfully created.’
redirect_to :action => ‘list’
else
render :action => ‘new’
end
end

def edit
@clients = Client.find(:all)
@project = Project.find(params[:id])
end

def update
params[:project][:user_ids] ||= []
@project = Project.find(params[:id])
if @project.update_attributes(params[:project])
flash[:action_ok] = ‘Project was successfully updated.’
redirect_to :action => ‘index’
else
render :action => ‘edit’
end
end[/code]
Fragment formularza wspólnego dla Edit i Create project:

<% for user in User.find(:all) %> <%= check_box_tag "project[user_ids][]", user.id, @project.users.include?(user) %> <%= user.name %> <% end %>
Przy Edycji wszystko chodzi dobrze, natomiast przy tworzeniu nowego projektu jeśli odhaczę jeden checkbox, czyli przypiszę jednego Usera do Projektu to dostaję błąd w okienku walidacyjnym: “Users is invalid”
Jeśli odhaczę więcej to mam tych błędów więcej. Podejrzewam, że próbuje przypisać Usera do projektu, który jeszcze nie został stworzony. Może trzeba jakoś rozbić if @project.save, sam nie wiem …???

Kolejna rzecz, mam taki zapis:

@all_clients = Client.find(:all, :include => {:projects  => :hours }, :order => "name, title")

Teraz jak to zmodyfikować, żeby pokazać tylko Projekty przypisane do danego Usera, czyli chcę wykorzystać moje HABTM. ID Usera mam w sesji. Próbowałem tak:

@all_clients = Client.find(:all, :include => {:projects => :hours }, :conditions => ['user_id = ?', session[:user_id]], :order => "name, title")
Pokazuje inną listę projektów, ale to nie jest to co powinno być :frowning:

Będę wdzięczny za wszelkie podpowiedzi.

Co do pierwszego problemu to przeczytaj komentarze w:

http://wiki.rubyonrails.org/rails/pages/CheckboxHABTM

piachoo: dzięki. już widzę w czym rzecz.

Będę wdzięczny za pomoc przy drugim problemie, czyli jak zapisać tego Find-a …?