如何在 Rails 中与一个对象关联两次?

发布于 2024-12-04 22:46:55 字数 200 浏览 0 评论 0原文

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

任务具有用户类型的创建者和用户类型的受让人。

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

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

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

I've got a Users model and a Tasks model.

A task has a creator, of type user, and an assignee of type user.

I've already done a migration of AddUserIdtoTasks to get the creator relation working, but now I need to do the same thing again to add the assignee, but I'm already using the keyword 'user'. How should I go about building a proper relation.

A task only has one assignee, always.

I'm using devise for the user model.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦欢 2024-12-11 22:46:55
has_one :creator, :class_name => "User"
has_one :asignee, :class_name => "User"

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

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

Or belongs_to, depending on how your fields are set up. has_one and belongs_to both take an optional :class_name argument for cases just such as yours.

清风挽心 2024-12-11 22:46:55

在任务模型中创建字段 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。更新的 User 类还带有 :foreign_key 参数,如果没有它,user.assigned_tasks 将使用 :user_id 参数(默认值)连接记录has_many,即“#{class_name}_id”`)。

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

来源:http://guides.rubyonrails.org/association_basics.html#detailed-association -参考

Create the field assignee_id in your Task model and then use it for the relation as in

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

On the other side of the relation

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

Sorry, should be :class_name. Updated User class also with a :foreign_key parameter, without it user.assigned_tasks would have joined records using the :user_id parameter (the default value for has_many, i.e. "#{class_name}_id"`).

I invite you to read the link I've posted, it explains better than me all these things.

Source: http://guides.rubyonrails.org/association_basics.html#detailed-association-reference

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文