ActiveRecord association extension che non vanno

Ciao,
voglio capire se qualcuno ha gia’ riscontrato un problema simile.

Uso Rails 2.3.5 (per un problema di compatibilita’…)

In un modello che chiamo ‘Post’ ho qualcosa tipo:

has_many :comments do
def foo
all
end
end

Quindi:

p = Post.find :first
p.comments
è ok, funziona e mi restituisce un array di commenti
p.comments. + [tab]
tra la lista dei metodi disponibili c’e’ anche ‘foo’.
Tuttavia:
p.comments.foo
da’ errore:
NoMethodError: SQL (1.1ms) SHOW TABLES
undefined method `foo’ for #Class:0x10306fe88

Strano… inoltre ha smesso di funzionare da poco…
Qualche suggerimento?

Grazie mille,
iwan

A meno che la febbre non mi faccia straparlare…

Il 03 febbraio 2011 15:26, Iwan B. [email protected] ha scritto:

end
end

Quindi:

p = Post.find :first
p.comments
ok, funziona e mi restituisce un array di commenti
p.comments. + [tab]
tra la lista dei metodi disponibili c’e’ anche ‘foo’.

Personalmente trovo strano il fatto che ti mostri foo nella lista dei
metodi :slight_smile:

Tuttavia:
p.comments.foo
da’ errore:
NoMethodError: SQL (1.1ms) SHOW TABLES
undefined method `foo’ for #Class:0x10306fe88

hai definito il metodo per le istanze della classe Post ergo foo
dovrebbe funzionare solo quando viene richiamato su di un oggetto
Post:

Post.find_by_id(1).foo

A questo punto non capisco il senso di richiamare tutte le istanze
della classe Post tramite un’istanza quando puoi richiamare
direttamente Post.all .

Strano… inoltre ha smesso di funzionare da poco…

IMHO e’ ancora piu’ strano il fatto che prima funzionasse :wink:

Maurizio

Ho scovato la causa.

Il problema era dovuto ad un conflitto con la gemma ‘facets’.
In environment.rb avevo c’era un
config.gem ‘facets’, :version => ‘2.8.4’

che alterava il corretto funzionamento dell’associazione degli AR.
Commentato e ora gira tutto come prima.

Riguardo a Facets rimando ad un altro topic.

Grazie e buon lavoro,
iwan