# RE: Classe 'normale' come ActiveRecord

**URL:** <https://www.ruby-forum.com/t/re-classe-normale-come-activerecord/67984>\
**Category:** IT\
**Created:** [September 8, 2006, 9:33am UTC](https://www.ruby-forum.com/t/re-classe-normale-come-activerecord/67984 "2006-09-08T09:33:27Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [September 8, 2006, 9:33am UTC](https://www.ruby-forum.com/t/re-classe-normale-come-activerecord/67984/1 "2006-09-08T09:33:27Z")

</div>

stilisticamente è carino, io ho uno stile differente, ma comunque a me  
piace.  
Solo che non capisco il senso del tutto…  
se ti serve una classe che non prende delle proprietà dinamicamente (come  
gli AR) ma le dichiara al suo interno come array, perchè non fare una  
classe “normale”?

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [September 8, 2006, 9:59am UTC](https://www.ruby-forum.com/t/re-classe-normale-come-activerecord/67984/2 "2006-09-08T09:59:31Z")

</div>

> stilisticamente è carino, io ho uno stile differente, ma comunque a me piace.  
> Solo che non capisco il senso del tutto…  
> se ti serve una classe che non prende delle proprietà dinamicamente (come gli AR) ma le dichiara al suo interno come array, perchè non fare una classe “normale”?

Invece mi serve una cosa che prende le proprieta` dinamiche, ma non che non si appoggia sul database. Magari c'e` un trucco per fare  
questo con AR?

–  
David N. Welton

- [David N. Welton](http://www.dedasys.com/davidw/)

Linux, Open Source Consulting

- [http://www.dedasys.com/](http://www.dedasys.com/)

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [September 8, 2006, 10:15am UTC](https://www.ruby-forum.com/t/re-classe-normale-come-activerecord/67984/3 "2006-09-08T10:15:35Z")

</div>

On Sep 8, 2006, at 9:57 AM, David W. wrote:

> > stilisticamente è carino, io ho uno stile differente, ma comunque  
> > a me piace.  
> > Solo che non capisco il senso del tutto…  
> > se ti serve una classe che non prende delle proprietà  
> > dinamicamente (come gli AR) ma le dichiara al suo interno come  
> > array, perchè non fare una classe “normale”?
> 
> Invece mi serve una cosa che prende le proprieta`dinamiche, ma non che non si appoggia sul database. Magari c'e` un trucco per fare  
> questo con AR?

Non ti basta una “banale” Struct? Se poi la vuoi inizializzare  
passando i parametri  
in un hash…

class QuasiActiveRecord \< Struct  
def initialize(hash)  
hash.each { |k,v| self.send("#{ k }=", v) }  
end  
end

Contact = QuasiActiveRecord.new(:name, :via, :cap)

c = Contact.new(:name =\> ‘fred’, :via =\> ‘con il vento’, :cap =\> 35100)  
puts c.name

> > > fred

Contact.new(:foo =\> ‘bar’)  
r.rb:3:in `send': undefined method`foo=’ for # (NoMethodError)

–  
Stefano C.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Giuliano\_U](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/ecd19e/32.png) [@Giuliano\_U](https://www.ruby-forum.com/u/Giuliano_U)\
**Post date:** [September 8, 2006, 10:35am UTC](https://www.ruby-forum.com/t/re-classe-normale-come-activerecord/67984/4 "2006-09-08T10:35:39Z")

</div>

Se lavori in Rails e vuoi ActiveRecords ma senza una tabella dietro  
estendi  
questa classe:

class ActiveForm \< ActiveRecord::Base

def self.columns() @columns ||= []; end

def self.column(name, sql\_type = nil, default = nil, null = true)  
columns \<\< ActiveRecord::ConnectionAdapters::Column.new(name.to\_s,  
default, sql\_type.to\_s, null)  
end

def initialize(attributes = nil)  
super  
end

def self.abstract\_class; return true; end  
end

Così puoi comunque sfruttare validazione e associazioni, bello no?

La puoi usare in questo modo:

class MyClass \< ActiveForm  
column :name, :string  
column :description, :string, :default =\> “cool”  
end

Paolo

On 9/8/06, Stefano C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Invece mi serve una cosa che prende le proprieta`dinamiche, ma non end r.rb:3:in`send’: undefined method `foo=’ for #\<struct Contact  
> > removed\_email\_address@domain.invalid  
> > [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Paolo D.’  
SeeSaw | Another point of view

> **[A Padova il buon software chi lo fa?](https://seesaw.it/)**
>
> A creare software sono tantissimi, a farlo molto bene c’è una certa schiera di sviluppatori, ma a costruirlo un pezzo alla volta insieme al cliente, plasmarlo sulle sue esigenze e renderlo parte di un nuovo approccio al mondo del lavoro sono davvero...

removed\_email\_address@domain.invalid
