Ciao a tutti!
Sto facendo qualche test per la creazione di un semplice slide show.
La situazione è questa:
Ho 3 tabelle:
- slide_pictures (titolo e indirizzo dell’immagine)
- slide_shows (sequenza di immagini)
- slide_pictures_slide_shows
I due modelli - slide_picture e slide_show - sono legati dalla relazione
many to many e sono stati generati tramite scaffold.
Ho modificato le action create e update di slide_show per permettere il
salvataggio delle pictures abbinate con questo codice:
def create
@slide_show =
current_user.client.slide_shows.build(params[:slide_show])
@slide_show.slide_pictures =
current_user.client.slide_pictures.find(params[:slide_picture_ids])
respond_to do |format|
if @slide_show.save
.....
e nelle viste new ed edit ho inserito questo codice che mi mostra tutte
le picture disponibili:
Slide Pictures
<%= select_tag("slide_picture_ids[]",
options_for_select(current_user.client.slide_pictures.collect { |slide|
[slide.title, slide.id] },
@slide_show.slide_pictures.collect { |slide| slide.id}),
{:multiple=>true, :size=>10})%>
Funziona tutto correttamente quando visualizzo le viste, mentre quando
cerco di salvare i dati mi ritorna questo errore:
Mysql::Error: #23000Duplicate entry ‘1’ for key 1: INSERT INTO
slide_pictures_slide_shows (id
, slide_show_id
, slide_picture_id
)
VALUES (1, 2, 1)
Questo perchè cerca di inserire un record con id 1 quando esiste già .
Praticamente facendo un pò di prove ho notato che cerca di inserire un
record con lo stesso id della slide_picture.
Avete qualche consiglio?
E’ corretto dal punto di vista logico la mia implementazione?