在我的Rails 3.2应用中,我在has_and_belongs_to_many :notes
上有Profile
个关联。 Note
上有一个类型 - “紧急”或“标准”。 (Note
has_and_belongs_to_many :profiles
。)
我希望能够执行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
通过添加另一个关联,有没有一种干净的方法呢?或者像范围这样的东西最好?
答案 0 :(得分:1)
Note上的范围最佳。 范围:急,哪里(类型:'紧急')
然后你可以做profile.notes.urgent来获得紧急笔记。
答案 1 :(得分:1)
如果您不想使用范围,请在此处重写您的Profile方法:
def urgent_notes
self.goals.map {|g| g.type == 'urgent'}
end
您无需创建新数组或任何内容。 Rails和Ruby可以为您完成所有这些工作。