Classe 'normale' come ActiveRecord

Ciao,

Sto cercando di creare una classe ‘normale’ (non eredita da AR) che si puo inizializzare piu` o meno come un AR:

Contact.new params

Ci sono riuscito facendo cosi`, ma vorrei sapere se ci sono “metodi”
(ha ha) migliori:

class Contact
@@classattrs = [:name, :via, :cap]
attr_accessor *@@classattrs

def initialize(params)
params.each do |k, v|
if @@classattrs.member? k
self.send(k.to_s + “=”, v)
end
end
end

end

prms = {:name => ‘fred’, :via => ‘con il vento’, :cap => 35100}

c = Contact.new prms

puts c.name


David N. Welton

Linux, Open Source Consulting

On 9/7/06, David W. [email protected] wrote:

Ciao,

Sto cercando di creare una classe ‘normale’ (non eredita da AR) che si puo inizializzare piu` o meno come un AR:

Contact.new params

require ‘ostruct’

x = OpenStruct.new(:a => 1, :b => 2)

p a #=> 1
p b #=> 2

On Sep 8, 2006, at 11:45 AM, Massimiliano M. wrote:

x = OpenStruct.new(:a => 1, :b => 2)

p a #=> 1
p b #=> 2

x.foobar = “ma cosi’ puoi assegnare a x qualsiasi proprieta’”
=> “ma cosi’ puoi assegnare a x qualsiasi proprieta’”

On Sep 8, 2006, at 12:31 PM, Massimiliano M. wrote:

x.foobar = “ma cosi’ puoi assegnare a x qualsiasi proprieta’”
=> “ma cosi’ puoi assegnare a x qualsiasi proprieta’”

x.problems_I_see_with_that #=> nil

:slight_smile:

it_depends_on_what_david_intended_to_do(:with => x)

eheh :slight_smile:

x.foobar = “ma cosi’ puoi assegnare a x qualsiasi proprieta’”
=> “ma cosi’ puoi assegnare a x qualsiasi proprieta’”

x.problems_I_see_with_that #=> nil

:slight_smile:

x.problems_I_see_with_that #=> nil

:slight_smile:

it_depends_on_what_david_intended_to_do(:with => x)

Direi che è caratteristica comune a tutte le soluzioni proposte e al
proporre soluzioni in generale. (Traduzione in Ruby lasciata come
esercizio ai volenterosi. :-))

“Massimiliano M.” [email protected] writes:

Direi che è caratteristica comune a tutte le soluzioni proposte e al
proporre soluzioni in generale. (Traduzione in Ruby lasciata come
esercizio ai volenterosi. :-))

soluzioni_proposte.caratteristiche.detect { |car|
soluzioni_proposte.inject(true) { |cond, sol| cond and sol.has? car} }

On Sep 9, 2006, at 2:30 AM, Andrea R. wrote:

Scusate se intervengo senza dire nulla che sia legato al post… ma
vedere i
messaggi scritti in questo modo mi fa troppo sorridere :smiley:
Siamo nella via della ruby pazzia :stuck_out_tongue:

La via della pazzia la percorrono quelli costretti a programmare
con abomini del genere di PHP (come spesso il sottoscritto, ahime’).
Ruby e’ la cosa piu’ sana di mente che esista :slight_smile:

Scusate se intervengo senza dire nulla che sia legato al post… ma
vedere i
messaggi scritti in questo modo mi fa troppo sorridere :smiley:
Siamo nella via della ruby pazzia :stuck_out_tongue:

it_depends_on_what_david_intended_to_do(:with => x)

Effettivamente, a David serve una soluzione che scarta le chiavi non
desiderate:-) Andrebbero bene la mia versione, quella basata su
struct, e anche quella di AR hackerato per non guardare il DB.

Grazie per le risposte, e` stato istruttivo!


David N. Welton

Linux, Open Source Consulting