Chiave esterna rimane NIL

Ho un problema con un record che non viene salvato - quando viene creato
nuovo - con la corrispondente chiave esterna.
Mostro il codice e poi qualche spiegazione:

def new_lavoro
@ilcandidato = session[‘user’] # aggiunto per una verifica
@ilcandidato2 = session[‘user’].id # aggiunto per una verifica
@lavoro = Lavori.new(:user => @ilcandidato)
end

def create_lavoro
@lavoro = Lavoro.new(params[:lavoro])
@user = User.find(@session[‘user’].id)

@lavoro.titolo = “Spazzino” # reimposta correttamente!!

@lavoro.user = @session['user']
@lavoro.user.id = 1  # ... continua a rimanere NIL...


if @lavoro.save
  flash[:notice] = 'Lavoro &egrave stato creato con successo.'
  redirect_to :action => 'edit_info'
else
  render :action => 'new_lavoro'
end

end

In pratica ‘lavoro’ viene sempre salvato con tutti i campi corretti
(come sono stati inseriti) tranne che per user che continua ad essere
NIL. Come si vede dal codice ho provato anche a imporre l’id di lavoro
ma nulla da fare…

Il modello ‘Lavoro’ contiene la relazione ‘belongs_to :user’, mentre il
modello ‘User’ contiene la relazione ‘has_many :lavori’.

Qualche idea?

Grazie mille per l’aiuto

@lavoro.user, per ricavare il valore, esegue una query sul db, quindi
fallisce, perché non hai ancora persistito quella relazione. Quindi devi
prima salvare @lavoro, poi puoi chiedergli di restituirti il relativo
user.

Luca

No, il codice era corretto. Ho risolto (sono rimasto fermo oltre 5 ore
su questa cosuccia…)

Nell’associazione “belongs_to :user” mancava la specificazione
":foreign_key => “user”!!! Non era necessaria se la chiave esterna fosse
stata “user_id”. Ero consapevole della cosa, ma convinto che il nome
dell’attributo fosse corretto… sigh!