Ruby Forum Italian Ruby user group > form con primary key

Posted by Andrea Catalano (cata86)
on 21.04.2008 18:53
Salve, Io ho un piccolo problema.
io ho il model paziente dove ho impostato il cd come primary_key
self.primary_key = "cf"

nella view new io inserisco tutti i dati in una form fra i quali anche
il :cf
la form richiama l'action

Il problema รจ che non mi salva il :cf e mi setta sempre NULL

controller:

 def create
    @patient = Patient.new(params[:patient])
    @patient.save

  end


view:

<% form_for :patient, :url => { :action => :create } do |f| %>
   <p>
    <b>CF</b><br />
    <%= f.text_field :cf %>
  </p>

  <p>
    <b>First name</b><br />
    <%= f.text_field :first_name %>
  </p>

  <p>
    <b>Last name</b><br />
    <%= f.text_field :last_name %>
  </p>
  <%= submit_tag %>
<% end %>


dove sbaglio??

grazie
Posted by Luca Guidi (Guest)
on 21.04.2008 19:05
(Received via mailing list)
Ciao Andrea,
Probabilmente la primary key ่ protetta dall'assegnamento massivo.
Prova con:
@patient = Patient.new(params[:patient])
@patient.cf = params[:patient]
@patient.save

Luca
Posted by Luca Guidi (Guest)
on 21.04.2008 19:06
(Received via mailing list)
Ops, sbagliato la seconda riga. Dovrebbe essere:
@patient.cf = params[:patient][:cf]
Posted by Andrea Catalano (cata86)
on 21.04.2008 19:35
Grazie mille ho risolto.
Ci ho perso 1 ora
io avevo provato anche a fare

@patient = Patient.new(params[:patient])
@patient.cf = params[:cf]
@patient.save

ma mi restava sempre NULL
Posted by Luca Guidi (Guest)
on 21.04.2008 21:09
(Received via mailing list)
Di niente, anche a me ่ capitata una cosa simile, se guardi nel log
dovrebbe aver generato un Warning.
Posted by Stefano Franzin (stefanof)
on 22.04.2008 10:40
Andrea,
io non metterei solo il cf come primary key.
Anni fa l'Agenzia delle Entrate aveva fatto un pasticcio nel rilascio 
dei cf e esistevano dei duplicati.
Teoricamente ora dovrebbe essere tutto in ordine, ma la famosa legge di 
Murphy รจ sempre in agguato.

Ciao e buon lavoro

Stefano

Andrea Catalano wrote:
> Salve, Io ho un piccolo problema.
> io ho il model paziente dove ho impostato il cd come primary_key
> self.primary_key = "cf"
> 
Posted by Matteo Vaccari (Guest)
on 22.04.2008 21:19
(Received via mailing list)
On Tue, Apr 22, 2008 at 10:40 AM, Stefano Franzin 
<s_franzin@infinito.it>
wrote:

> Andrea,
> io non metterei solo il cf come primary key.
> Anni fa l'Agenzia delle Entrate aveva fatto un pasticcio nel rilascio
> dei cf e esistevano dei duplicati.
> Teoricamente ora dovrebbe essere tutto in ordine, ma la famosa legge di
> Murphy ่ sempre in agguato.
>

Vero.  Di solito ่ una buona idea lasciare che rails generi una chiave
primaria tecnica (id) e tenere la chiave naturale in un normale 
attributo.
Anche sul libro di Rails cita come esempio il codice ISBN che 
apparentemente
่ una buona scelta come chiave primaria per una tabella di libri, ma 
diventa
un problema quando i codici ISBN vengono cambiati (cosa che non 
"dovrebbe"
succedere ma succede.)  Se segui le convenzioni di Rails perdi meno 
tempo :)