Я смущен тем, что вы пытаетесь сделать с FriendGroups.
Ваша базовая дружба моделируется следующим образом:
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
Вы хотите массово создавать записи о дружбе между всеми пользователями, которых вы передаете? Вероятно, это какая-то проблема с перестановками. Не то, для чего вам понадобится другая модель. Может быть, метод класса на Friendship, например interconnect(user_ids)
.
Если вы хотите найти группы пользователей, которые дружат друг с другом, это звучит так, как будто вы изучаете теорию графов и возможность подключения.
ИЗМЕНИТЬ:
В случае, когда FriendGroups являются просто общими контейнерами друзей с прикрепленным именем, я бы сделал что-то вроде этого:
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
Я бы, вероятно, вложил FriendGroups в Users, а FriendGroups accept_nested_attributes_for FriendGroupings. Я бы сделал это в контроллере FriendGroup и в представлении для FriendGroup позволил бы пользователю установить имя группы, а затем дал бы им флажки для каждого из своих друзей, чтобы поместить их в группу. Для каждого друга они выбирают создание новой группы друзей между группой друзей и пользователем. Это должно дать вам то, что вы хотите.
person
Adam Tanner
schedule
28.10.2010