2015-04-09 5 views
-1

У меня есть коллекция ActiveRecord:Как получить коллекцию объекта ActiveRecord из другой коллекции объектов ActiveRecord?

current_user.memberships 
=> [#<Membership id: 20, student_id: 19, group_id: 4, state: "accepted", created_at: "2015-04-02 09:58:45", updated_at: "2015-04-02 09:59:42">, 
#<Membership id: 19, student_id: 18, group_id: 4, state: "accepted", created_at: "2015-03-19 14:01:58", updated_at: "2015-03-20 13:27:38">, 
#<Membership id: 17, student_id: 16, group_id: 4, state: "accepted", created_at: "2015-03-19 13:42:38", updated_at: "2015-03-20 13:28:38">, 
#<Membership id: 16, student_id: 15, group_id: 4, state: "accepted", created_at: "2015-03-19 13:39:15", updated_at: "2015-03-19 13:39:15">, 
#<Membership id: 15, student_id: 14, group_id: 4, state: "accepted", created_at: "2015-03-19 13:28:12", updated_at: "2015-03-19 13:28:12">, 
#<Membership id: 14, student_id: 13, group_id: 4, state: "accepted", created_at: "2015-03-19 13:26:44", updated_at: "2015-03-19 13:26:44">, 
#<Membership id: 13, student_id: 12, group_id: 4, state: "accepted", created_at: "2015-03-19 13:19:05", updated_at: "2015-03-19 13:19:05">] 

Я хочу, чтобы получить коллекцию групп (уникальных) от current_user.memberships. В этом случае будет только один Group:

#<Group id: 4, school_id: 6538, name: "Klasa 1a", created_at: "2015-03-19 13:19:05", updated_at: "2015-03-19 13:19:05", user_id: 13, tutor_user_id: nil, tutor_email: nil> 

В псевдокоде, что будет что-то вроде current_user.memberships.groups.unique. Как я могу это сделать?

Мои модели:

class Group < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :groups 
    has_many :memberships, through: :groups 
end 

class Membership < ActiveRecord::Base 
    belongs_to :student 
    belongs_to :group 
end 
+2

Что не так с current_user.groups? – coderhs

+0

На самом деле, ваши ассоциации, похоже, искалечены. Мне кажется, что у пользователя должно быть много «членства», а затем есть много «групповых» членских взносов. Я прав? –

+0

@Coderhs Я хочу получить только те 'группы'' current_user', которые имеют 'членство' с условием' ожидания'. 'current_user.groups' дает мне все группы, принадлежащие пользователю. – pmichna

ответ

0

current_user.groups является коллекция уникальных групп, belong_to пользователю в настройках модели.

Смежные вопросы