RE: Classe 'normale' come ActiveRecord

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”?

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 proprietadinamiche, ma non che non si appoggia sul database. Magari c'e un trucco per fare
questo con AR?


David N. Welton

Linux, Open Source Consulting

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 proprietadinamiche, 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 methodfoo=’ for # (NoMethodError)


Stefano C.
[email protected]

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. [email protected] wrote:

Invece mi serve una cosa che prende le proprietadinamiche, ma non end r.rb:3:insend’: undefined method `foo=’ for #<struct Contact
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Another point of view


[email protected]