pezzuya
December 1, 2009, 11:51am
1
Ciao a tutti.
Ecco il mio nuovo problema:
Devo iterare sugli elementi dell’oggetto User (id, login, name) per
verificare quali di questi sono cambiati dopo “update_attributes” solo
che…
non trovo il modo per farlo
Chiaramente con “each” non funziona perchè each non é un metodo di User.
Ho provato a convertire l’oggetto in un array usando “to_a” ma viene
creato un array di un elemento contenente l’oggetto precedente a cui
devo comunque accedere usando la sintassi:
array[0][:id]
e sono al punto di partenza
come potrei risolvere?
Grazie a tutte le persone che mi vorranno aiutare
Ciao
pezzuya
December 1, 2009, 12:02pm
2
Ciao,
non so se ho capito bene qual è il tuo problema: hai un oggetto con 3
campi e vuoi iterarci a la:
user.each do |element|
#la tua logica qui
end
se è questo il tuo caso puoi inserire in User questo metodo:
def each
yield name
yield id
yield login
end
ma onestamente non vedo il senso… credo di aver capito male cosa
intendi. Puoi spiegarti meglio?
–
Andrea D.
Andrea Dallera 's blog
pezzuya
December 1, 2009, 12:23pm
3
Il 01 dicembre 2009 11.51, pezzuya … [email protected] ha
scritto:
Ciao a tutti.
Ecco il mio nuovo problema:
Devo iterare sugli elementi dell’oggetto User (id, login, name) per
verificare quali di questi sono cambiati dopo “update_attributes” solo
che…
non trovo il modo per farlo
ci sono i Dirty Objects:
http://api.rubyonrails.org/classes/ActiveRecord/Dirty.html
@user = User.first
=> #
@user.changed ?
=> false
@user.changed
=> []
@user.name = ‘un_nome_diverso’
=> ‘un_nome_diverso’
@user.changed ?
=> true
@user.changed
=> [‘name’]
@user.login = ‘unalogindiversa’
=> ‘unalogindiversa’
@user.changed ?
=> true
@user.changed
=> [‘name’, ‘login’]
@user.save
=> true
=> @user.changed ?
=> false
pietro
Ho risolto con:
User.column_names.each do |c|
userold[c] != usernew[c]
end
grazie a tutti
pezzuya
December 1, 2009, 12:23pm
5
Puoi usare il metodo attributes dell’oggetto user
Sulla doc di ActiveRecord
poi puoi iterare sull’hash con each, each_key, o each_value a seconda
di quel che ti serve…
ciao ciao
Piero
Il 01 dicembre 2009 12.02, Andrea D. [email protected] ha
scritto:
non trovo il modo per farlo
come potrei risolvere?
–
Piero B.
Blog: cookedapple.net
Twetter: twitter.com/petecocoon
Books: anobii.com/petecocoon
LinkedIn: http://www.linkedin.com/in/pbozzolo
Prima di stampare questa email pensa all’ambiente