Iterare sugli elementi di un'istanza di ActiveRecord

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 :frowning:

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 :frowning:

come potrei risolvere?

Grazie a tutte le persone che mi vorranno aiutare

Ciao

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.
http://usingimho.wordpress.com

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 :frowning:

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 :wink:

Puoi usare il metodo attributes dell’oggetto user
Sulla doc di ActiveRecord
http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002348

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 :frowning:
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