2013-05-26 2 views
0

В моем приложении Rails 3.2 У меня есть ассоциация has_and_belongs_to_many :notes на Profile. Note имеет тип на нем - «срочный» или «стандартный». (Notehas_and_belongs_to_many :profiles.)Как получить подмножество отношений has_and_belongs_to_many

Я хотел бы быть в состоянии сделать что-то вроде profile.urgent_notes без создания его в методе, как:

def urgent_notes 
    urgent_notes = Array.new 
    goals.each do |g| 
    if g.type == "urgent" 
     urgent_notes << g 
    end 
    end 

    urgent_notes 
end 

Так есть чистый способ сделать это, добавив еще одну ассоциацию? Или что-то вроде области лучше?

ответ

1

Объем на заметке лучше всего подходит. scope: срочный, где (тип: «срочный»)

Тогда вы можете сделать profile.notes.urgent, чтобы получить срочные заметки.

+0

Ярмарка достаточно. Благодаря! – tvalent2

1

Если вы не хотите использовать сферу, вот переписывание вашего метода профиля:

def urgent_notes 
    self.goals.map {|g| g.type == 'urgent'} 
end 

Вам не нужно создавать новый массив или что-нибудь. Rails и Ruby делают все, что сработает для вас.

+0

Правда, хорошая точка. – tvalent2

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