Acts_as_tree & has_many :through

Hello,

Suite au conseil de Richard [1] sur l’utilisation du acts_as_tree pour
hiérarchiser des groupes dans une seul table … je pousse mon test un
peu plus loin.

Voila mon contexte :

1 Ã N groups, qui contiennent 0 Ã N groups, qui contiennent 0 Ã N items

item.rb

class Item < ActiveRecord::Base
belongs_to :group
end

group.rb

class Group < ActiveRecord::Base
acts_as_tree :order => “id”
has_many :items
end

Je souhaites pouvoir acceder aux items (associé à un groupe) à partir du
groupe directement rattaché (clé étrangere sur la table items) (ceci
fonctionne) mais aussi acceder aux items de tous les sous groupes d’un
groupe.

en gros, si j’ai un groupe ‘root’ et deux groupes ‘child1’ et ‘child2’

si child1 contient 10 items, et child2 5 items.

Si je fais un child1.items.count, il me retourne bien 10, idem avec
child2 qui me retourne 5.

J’aimerais pouvoir faire un root.items.count et qu’il me donne 15.

J’ai regardé du coté de has_many :trough pour lui faire comprendre qu’un
groupe peut donner acces à une liste d’items par l’intermediaire d’un ou
plusieurs autres groupes … mais sans succès, peut-être (sans doute) un
probleme de syntaxe ou de compréhension de cette commande ?

Si vous avez une idée… :slight_smile:
Julien

[1] : http://www.railsfrance.org/node/554

PS: voila le code que j’aimerais voir fonctionner ( à tord sûrement :wink:

    <% for group in @groups %>
  • <%= group.name %> <%= group.items.count %> <% if group.children.count %>
      <% for child in group.children %>
    • <%= child.name %> <%= child.items.count %>
    • <% end %>
    <% end %>
  • <% end %>

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs