Hello, I'm relatively new to Rails.. first post here :)
Hope I'm not repeating an already asked question though I assume I'm not the first one looking for how to best implement such an association.. Anyway, haven't found the answers I was looking for when searching for it, thus posting here a question. Apologise in advance if it's a repeated one.. but would still appreciate any helpful suggestion / direction / reference.. a lot.. :) I started working on a project where there are hierarchical groups of users. If I were to call the groups GroupAUsers, GroupBUsers, GroupCUsers, GroupDUsers (may be more Groups, behaving the same way), then the connection between the users in each group can be illustrated as follows: * GroupAUsers have many GroupBUsers, plus have their own groupAUser attributes. They also have full access to all other User groups hierarchically “below” GroupBUsers. * GroupBUsers belong to GroupAUsers and have many GroupCUsers, plus have their own specific GroupBUsers' attributes. For each User of GroupCUsers they have full access to his/her GroupDUsers. * GroupCUsers belong to GroupBUsers and have many (each such user) GroupDUsers, plus have their own specific attributes * GroupDUsers belong to GroupCUsers and have their own specific attributes. * And so on.. (in case of additional such groups) A better description of this would probably be (writing code only to explain, this is not a copy paste of my code, though it's what I have in mind right now as for associating the models) class GroupAUser < ActiveRecord::Base has_many :group_b_users has_many :group_c_users, :through => :group_b_users # Not sure how should the # has_many :group_d_users # association look like … # it's a 'nested through'.. # which means I need some help here as well in case that's what I should be doing.. # plus it becomes worse in case I have additional groups end class GroupBUser < ActiveRecord::Base belongs_to :group_a_user has_many :group_c_users has_many :group_d_users, :through => :group_c_users end class GroupCUser < ActiveRecord::Base belongs_to :group_b_user has_many :group_d_users end class GroupDUser < ActiveRecord::Base belongs_to :group_c_user end If this is the way I illustrate the associations, I guess my User model would look something like this: class User < ActiveRecord::Base has_many :group_a_users has_many :group_b_users has_many :group_c_users has_many :group_d_users end so I have access from each User's information to their suitable information as being a user inside a group. This is rather ugly, plus writing it down now, it seems wrong.. Reason I'm not using inheritance (say, from my User model) is I do not wish to end up with one huge table, rails being STI.. mainly that.. Another important point is a user can belong to several groups and should be able to see all relevant information according to his/her role in each group. Not sure yet how to best implement this “feature” as well.. if anyone has any suggestions he/she cares to share, I'd love to learn I'm currently using Rails 2.3.8 & Ruby 1.8.7. Also, for authentication and authorization – planning on using Authlogic and Declarative_Authorization. If anyone can direct me to a “best practice” of modelling hierarchical associations or suggest me anything else (including upgrading versions, though I did not get the impression there are significant changes from reading the associations Rails documentation), or even a “you got it completely wrong” (with some explanation if you can please be kind enough) – I'd *really* and truly appreciate it. Hope I managed to be clear enough.. Many thanks, Allison. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.