使用角色而不是用户类型的多个模型时如何实现 Rails 关联

发布于 2024-12-25 22:09:28 字数 636 浏览 0 评论 0原文

我需要一些关于采取以下最佳方法的建议。

我的应用程序中曾经有导师、学生、预订模型。

我想要一个包含一名导师和一名学生的预订。

目前,我正在使用 devise 进行用户身份验证,我喜欢使用通用用户的想法,并为用户定义角色,就像许多人使用 devise & 所做的那样。康康舞。例如,它可以轻松创建管理员角色。 因此,我可以在用户中包含导师或学生角色。

现在我的问题是我不能再按照我想要的方式使用关联,例如

Reservation
  belongs_to :Tutor
  belongs_to :Student

因为我不再为每种类型的用户提供单独的模型。

我应该怎么办?

我发现,如果我有导师和学生的单独模型,那么在设计中我将需要单独的链接来登录和编辑每种类型的用户。

添加一些类似问题的链接

Rails 中类名与关联名不匹配的多重关系

I need some advice on the best approach to take for the following.

I used to have Tutor, Student, Reservation models in my application.

I want a reservation to contain a Tutor and a Student.

Currently I am using devise for the user authentication, and I like the idea of using a generic User, and having roles defined for the users as many people have done with devise & cancan. It makes it easy to create an admin role for example.
Thus I could have a role Tutor or Student contained within User.

Now my problem is that I can no longer use associations in the way I would like, e.g.

Reservation
  belongs_to :Tutor
  belongs_to :Student

because I no longer have an individual model for each type of user.

What should I do?

I found that if I have individual models for Tutor and Student then in devise I would need seperate links for logging in and editing each type of user.

Adding some links to similar questions

Multipe relationships in Rails where the class name does not match the association name

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

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

发布评论

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

评论(1

乄_柒ぐ汐 2025-01-01 22:09:28

只需覆盖类名即可使用“User”:

class Reservation < ActiveRecord::Base
  belongs_to :tutor, :class_name => "User"
  belongs_to :student, :class_name => "User"
end

Just override the class name to use 'User':

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