Je suis confus sur ce que vous essayez de faire avec FriendGroups.
Votre amitié de base est modélisé comme:
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User"
end
class User < ActiveRecord::Base
has_many :friendships
has_many :friends, :through => :friendships
end
Vous souhaitez créer une masse records d'amitié entre tous les utilisateurs que vous transmettez? C'est probablement une sorte de problème de permutation. Pas quelque chose que vous auriez besoin d'un autre modèle pour. Peut-être une méthode de classe sur Friendship comme interconnect(user_ids)
.
Si vous souhaitez trouver des groupes d'utilisateurs qui sont tous des amis les uns avec les autres, cela donne l'impression d'entrer dans la théorie des graphes et la connectivité.
EDIT:
Dans le cas de FriendGroups juste être des conteneurs génériques d'amis avec un nom attaché que je ferais quelque chose comme ceci:
class User < ActiveRecord::Base
has_many :friend_groupings
has_many :friend_groups
has_many :friendships
has_many :friends, :through => :friendships
end
class FriendGrouping < ActiveRecord::Base
belongs_to :friend_group
belongs_to :friend
end
class FriendGroup < ActiveRecord::Base
has_many :friend_groupings
has_many :friends, :class_name => "User", :through => :friend_groupings
belongs_to :user
validates_presence_of :name # Name of FriendGroup
end
je ne serais probablement FriendGroups nid sous Utilisateurs, et Demandez à FriendGroups d'accepter les attributs_nested_for FriendGroupings. Je le ferais dans le contrôleur FriendGroup et dans la vue pour le FriendGroup permet à l'utilisateur de définir le nom du groupe et de leur donner des cases à cocher pour chacun de leurs amis à mettre dans le groupe. Pour chaque ami sélectionné, créez un nouveau FriendGrouping entre FriendGroup et l'utilisateur. Cela devrait vous apporter ce que vous voulez.
Voici comment cela fonctionne sur le site. Lorsque l'utilisateur ajoute des amis, les objets 'Friendship' sont créés. Ensuite, il peut aller à sa liste d'amis, sélectionner certains d'entre eux et créer un «FriendGroup» nommé (par exemple, famille, camarades de classe, etc.). La question est de savoir quel utilisateur doit soumettre pour créer un groupe: 'user_ids' ou' friendship_ids'. Avec 'friendship_ids' tout est facile dans le modèle, mais il me semble plus logique et cohérent que vous créez réellement un groupe d'utilisateurs, pas un groupe de relations. Donc, je voudrais garder 'friendship_ids' invisible pour l'utilisateur. – RocketR
J'ai édité la réponse pour traiter avec FriendGroups. Je pense que c'est davantage ce que vous cherchez. –
Bien, merci. – RocketR