Forum: Italian Ruby user group Una frozen string inaspettata

Posted by Andrea Ranaldi (mdrew)
on 2012-11-03 10:48
Ciao a tutti,
Devo caricare tramite csv dei dati un due modelli in relazione tra loro

address(name, surname, email) has_many options(key, value)

Il codice che uso e questo e dalla console mi funziona correttamente....

csv = CSV.parse(params[:file].read, :headers => true)
csv.each do |row|
  row = row.to_hash.with_indifferent_access
   address = @campaign.addresses.new(email: row['email'], name:
row['name'], surname: row['surname'])
  (row.keys - ['email','name','surname']).each {|k|
address.options.build( key: k, value: row[k])}
   address.save
end


Ma nel momento in cui lo metto nel controller cambia idea: se gli faccio
fare anche il build delle opzioni mi restituisce un runtime error:

can't modify frozen String: INSERT INTO "options" ("address_id",
"created_at", "key", "updated_at", "value") VALUES (?, ?, ?, ?, ?)

Commentando la riga delle opzioni lavora tranquillamente.

Non capisco, sopratutto il perche` mi funziona da console, immagino che
ci siano piu` controlli in development che in console ma non capisco
quali.


Ciao a tutti
Andrea
Posted by Andrea Ranaldi (mdrew)
on 2012-11-04 05:50
Mi sono svegliato alle cinque con la soluzione (chi l'avrebbe mai detto
che un giorno al mio risveglio avrei visto stringhe invece di favole e
fate).
Fallisce nella conversione della chiave in stringa. Ho cambiato k in
String.new(k) ottenendo un nuovo oggetto invece di una alterazione
dell'oggetto congelato.

Non mi e` ancora chiaro perche` nella console funzionasse ma posso
svegliarmi con proprio tutte le soluzioni.

Mi scuso per i periodi infausti, ma non sono completamente sveglio e
torno a dormire :)

Andrea
Posted by Sergio Berisso (Guest)
on 2012-11-04 12:38
(Received via mailing list)
Il giorno 04 novembre 2012 05:50, Andrea Ranaldi
<andrea.ranaldi@gmail.com>ha scritto:

> Mi sono svegliato alle cinque con la soluzione (chi l'avrebbe mai detto
> che un giorno al mio risveglio avrei visto stringhe invece di favole e
> fate).
>

:-))

Buon segno (o cattivo segno ... chi lo sa ;)
E' la passione che ci guida (cit.)

Fallisce nella conversione della chiave in stringa. Ho cambiato k in
> String.new(k) ottenendo un nuovo oggetto invece di una alterazione
> dell'oggetto congelato.
>
> Non mi e` ancora chiaro perche` nella console funzionasse ma posso
> svegliarmi con proprio tutte le soluzioni.
>
> Mi scuso per i periodi infausti, ma non sono completamente sveglio e
> torno a dormire :)


E speriamo che stavolta il risveglio sia con favole e (belle) fate :-p

S.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.