# Una frozen string inaspettata

**URL:** <https://www.ruby-forum.com/t/una-frozen-string-inaspettata/224213>\
**Category:** IT\
**Created:** [November 3, 2012, 10:48am UTC](https://www.ruby-forum.com/t/una-frozen-string-inaspettata/224213 "2012-11-03T10:48:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [November 3, 2012, 10:48am UTC](https://www.ruby-forum.com/t/una-frozen-string-inaspettata/224213/1 "2012-11-03T10:48:38Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [November 4, 2012, 5:50am UTC](https://www.ruby-forum.com/t/una-frozen-string-inaspettata/224213/2 "2012-11-04T05:50:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![reis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@reis](https://www.ruby-forum.com/u/reis)\
**Post date:** [November 4, 2012, 12:38pm UTC](https://www.ruby-forum.com/t/una-frozen-string-inaspettata/224213/3 "2012-11-04T12:38:58Z")

</div>

Il giorno 04 novembre 2012 05:50, Andrea R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)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.
