Finders et sous-classes

Bonjour, c’est ma première question ici car d’habitude il me suffit de
parcourir de tels forum pour trouver réponse à mes questions.
Donc cette fois, c’est du sérieux, je n’ai pas réussi à trouver la
moindre évocation à mon problème.

Je vous explique.
J’ai une famille de modèles :

class Attachement < ActiveRecord::Base

end

class Illustration < Attachement
…# classe qu’on pourrait qualifier de “virtuelle”
end

class IllustrationInterne < Illustration

end

class IllustrationExterne < Illustration

end

Tout cela fonctionne à merveille (héritage à table unique), seul hic,
lorsque je décide de rechercher l’ensemble de mes illustrations
(Illustration.find_all) j’observe d’étranges phénomènes paranormaux:

script/console
Loading development environment.

Illustration.find_all
=> []

Attachement.find_all
=> [#<Document:0x2699c1c @attributes={“role”=>nil, “type”=>“Document”,
“attachant_type”=>“News”, “id”=>“1”, “attachant_id”=>“34”}>,
#<IllustrationInterne:0x2696dc8 @attributes={“role”=>nil,
“type”=>“IllustrationInterne”, “attachant_type”=>“News”, “id”=>“72”,
“attachant_id”=>“36”}>, #<IllustrationInterne:0x2696a6c
@attributes={“role”=>nil, “type”=>“IllustrationInterne”,
“attachant_type”=>“News”, “id”=>“73”, “attachant_id”=>“36”}>]

Illustration.find_all
=> [#<IllustrationInterne:0x26946b8 @attributes={“role”=>nil,
“type”=>“IllustrationInterne”, “attachant_type”=>“News”, “id”=>“72”,
“attachant_id”=>“36”}>, #<IllustrationInterne:0x2694370
@attributes={“role”=>nil, “type”=>“IllustrationInterne”,
“attachant_type”=>“News”, “id”=>“73”, “attachant_id”=>“36”}>]

Visiblement, l’application ne connait pas les sous-classes de
Illustration avant que je ne fasse appel à Attachement…

Est-ce que quelqu’un a déjà rencontré et/ou résolu ce problème ?
Merci de votre aide et bonne continuation à tous.

Quentin Sabah wrote:

Bonjour, c’est ma première question ici car d’habitude il me suffit de
parcourir de tels forum pour trouver réponse à mes questions.
Donc cette fois, c’est du sérieux, je n’ai pas réussi à trouver la
moindre évocation à mon problème.

Je vous explique.
J’ai une famille de modèles :

class Attachement < ActiveRecord::Base

end

class Illustration < Attachement
…# classe qu’on pourrait qualifier de “virtuelle”
end

class IllustrationInterne < Illustration

end

class IllustrationExterne < Illustration

end

Tout cela fonctionne à merveille (héritage à table unique), seul hic,
lorsque je décide de rechercher l’ensemble de mes illustrations
(Illustration.find_all) j’observe d’étranges phénomènes paranormaux:

script/console
Loading development environment.

Illustration.find_all
=> []

Attachement.find_all
=> [#<Document:0x2699c1c @attributes={“role”=>nil, “type”=>“Document”,
“attachant_type”=>“News”, “id”=>“1”, “attachant_id”=>“34”}>,
#<IllustrationInterne:0x2696dc8 @attributes={“role”=>nil,
“type”=>“IllustrationInterne”, “attachant_type”=>“News”, “id”=>“72”,
“attachant_id”=>“36”}>, #<IllustrationInterne:0x2696a6c
@attributes={“role”=>nil, “type”=>“IllustrationInterne”,
“attachant_type”=>“News”, “id”=>“73”, “attachant_id”=>“36”}>]

Illustration.find_all
=> [#<IllustrationInterne:0x26946b8 @attributes={“role”=>nil,
“type”=>“IllustrationInterne”, “attachant_type”=>“News”, “id”=>“72”,
“attachant_id”=>“36”}>, #<IllustrationInterne:0x2694370
@attributes={“role”=>nil, “type”=>“IllustrationInterne”,
“attachant_type”=>“News”, “id”=>“73”, “attachant_id”=>“36”}>]

Visiblement, l’application ne connait pas les sous-classes de
Illustration avant que je ne fasse appel à Attachement…

Est-ce que quelqu’un a déjà rencontré et/ou résolu ce problème ?
Merci de votre aide et bonne continuation à tous.

Hmmm… j’ai retrouvé un ticket (4902) sur dev.rubyonrails.org qui fait
état d’un problème semblable.

Peut-être que çela marcherait si tu mets, p.e.,

class IllustrationInterne < Illustration
set_table_name “attachements”

end

? :slight_smile:

–Al Evans

Al Evans wrote:

Hmmm… j’ai retrouvé un ticket (4902) sur dev.rubyonrails.org qui fait
état d’un problème semblable.

En effet, c’est exactement ça, visiblement le billet date déjà de 4
mois…

Peut-être que çela marcherait si tu mets, p.e.,

class IllustrationInterne < Illustration
set_table_name “attachements”

end

Non, ça ne résout pas le problème.
Merci.