我有以下三个模型:用户,项目和任务分配。
一个用户通过任务分配与多个项目有关联。然而,任务有两个外键与用户有关: user_id(表示被指派项目的用户)和completer_id(表示完成项目的用户)。
通常,user_id和completer_id将是相同的(如果被指派项目的用户完成它)。但是,如果另一个用户完成它,user_id和completer_id将不同。
在我的用户模型中,我有以下内容:
我想创建另一个关联,名为
此外,我知道
最后,我应该提到,如果无法以这种方式完成并且有人能想到更好的方法,我也可以接受其他设计。
一个用户通过任务分配与多个项目有关联。然而,任务有两个外键与用户有关: user_id(表示被指派项目的用户)和completer_id(表示完成项目的用户)。
通常,user_id和completer_id将是相同的(如果被指派项目的用户完成它)。但是,如果另一个用户完成它,user_id和completer_id将不同。
在我的用户模型中,我有以下内容:
class User < ActiveRecord::Base
has_many :assignments
has_many :incomplete_assignments, :class_name => 'Assignment',
:conditions => 'completer_id IS NULL'
has_many :completed_assignments, :class_name => 'Assignment',
:foreign_key => 'completer_id'
# this is the important one
has_many :incomplete_projects,
:through => :assignments,
:source => :project,
:conditions => 'completer_id IS NULL'
end
我想创建另一个关联,名为
:completed_projects
,该关联使用completer_id
作为:through
模型中用户的外键,而不是:user_id
。这样做是否可行?此外,我知道
:foreign_key
选项,但在使用:through
时会被忽略,因此我想知道是否有一种方法可以在没有它的情况下进行操作。最后,我应该提到,如果无法以这种方式完成并且有人能想到更好的方法,我也可以接受其他设计。