编辑:我使用Mongoid,所以没有链接,也没有has_many through:
我正在为项目管理开发一个后端,并且我有“深层次”的相关模型。
class Project
include Mongoid::Document
has_many :steps
scope :active, ...
class Step
has_many :assignments
class Assignment
belongs_to :contractor, inverse_of: :project_assignment
belongs_to :step
class Contractor
belongs_to :user, inverse_of: :contractor_profile
has_many :project_assignments, class_name: 'Assignment'
class User
has_one :contractor_profile, class_name: 'Contractor'现在,我已经为我的用户编写了一个侧栏。在这个侧边栏中,如果用户有一个承包商配置文件,我想显示活动项目的数量。
实现对这些信息的访问的最佳方式是什么?
我们讨论的可能是一次多达30个活动项目,每个项目从1到6个任务(但许多步骤与相同的承包商),承包商通常有几个项目的总和(活动与否)。
我的想法:
current_contractor赋值、->步骤、->项目、->计数活动项目current_contractor匹配的承包人belong_to :project (如何确保它与self.step.project相同?)在每一项任务中,能够跳转承包商,->任务,->项目&计数发布于 2015-04-30 02:13:06
不确定您是如何直接使用演示程序或视图的,但是从模型的角度来看,您应该能够将activerecord关联链接起来(听起来您已经想到了这一点)。例如
current_contractor.assignment.steps.projects.where(:status=>'active').count您可以通过在项目模型中创建一个活动/非活动范围来稍微细化这一点,因此它将是
current_contractor.assignment.steps.projects.active.count如果这类查询可能是常见的,我会考虑创建一个嵌套的has_many_through关系,以便从承包商到项目,例如在承包商定义中:
has_many :steps,
:through => :assignments
has_many :projects, :through => :steps那你就可以
contractor.projects.count或者如果您已经创建了项目活动/非活动作用域
contractor.projects.active.count希望这有帮助
https://stackoverflow.com/questions/29953344
复制相似问题