我会做这样的事情。基本上设置您的关联并将范围应用于它们以获取您需要的数据。然后,您可能希望导航到每个嵌套路由以查看整个列表,或者通过 rails 或 JS 在页面上应用分页。如果你想变得超级疯狂,你可以急切地加载所有这些关联,但是有 3 个关联,每个关联都有条件,我认为这会很快变得疯狂
楷模
class Project < ActiveRecord::Base
has_many :files
has_many :discussions, :order => 'updated_at DESC'
has_many :todos
end
class File < ActiveRecord::Base
belongs_to :project
end
class Discussion < ActiveRecord::Base
belongs_to :project
#scope for last 5 discussions not marked as finished
def self.recent_unfinished
where(:finished => false).limit(5)
end
end
class Todo < ActiveRecord::Base
belongs_to :project
def self.undone
where(:complete => false)
end
end
控制器
def show
@project = Project.find(params[:id])
@files = @project.files.select(:filename, :filesize) #assuming you don't want blob data or whatever
@todos = @project.todos.undone
@discussions = @project.discussions.unfinished
end
注意:我没有测试任何这些东西,所以你可能必须使用语法才能让它工作:)