1

我有一个用户模型和一个任务模型。

一个任务有一个用户类型的创建者和一个用户类型的受理人。

我已经完成了 AddUserIdtoTasks 的迁移以使创建者关系正常工作,但现在我需要再次执行相同的操作来添加受让人,但我已经在使用关键字“用户”。我应该如何建立适当的关系。

一项任务始终只有一个受让人。

我正在为用户模型使用设计。

4

2 回答 2

2
has_one :creator, :class_name => "User"
has_one :asignee, :class_name => "User"

或者belongs_to,取决于您的字段的设置方式。对于像你这样的情况has_onebelongs_to两者都采用可选参数。:class_name

于 2011-09-15T17:40:59.223 回答
0

在您的任务模型中创建字段assignee_id,然后将其用于关系,如

class Task < AR::Base
  belongs_to :assignee, :class_name => 'User'
end

在关系的另一边

class User < AR::Base
  has_many: :assigned_tasks, :class_name => 'Task', :foreign_key => :assignee_id
end

对不起,应该是:class_name。更新的用户类也带有:foreign_key参数,没有它user.assigned_tasks会使用:user_id参数加入记录(has_many 的默认值,即“#{class_name}_id”`)。

我邀请您阅读我发布的链接,它比我更好地解释了所有这些事情。

资料来源: http: //guides.rubyonrails.org/association_basics.html#detailed-association-reference

于 2011-09-15T17:39:18.030 回答