【发布时间】:2019-04-29 11:52:06
【问题描述】:
我有一个用户模型,我想将其分配为教师或学生(教师和学生是两个独立的模型),因为如果用户注册,他将拥有不同的注册字段,具体取决于他是教师还是学生。用户可以是教师或学生,不能同时是两者。
我已经尝试过了,但不要认为这是最好的方法。有什么帮助吗?
class User < AR
has_secure_password
has_one :teacher, class_name: "teacher", foreign_key: "teacher_id", conditions: { role: 'teacher' }
has_one :student, class_name: "student", foreign_key: "student_id", conditions: { role: 'student' }
enum role: [:teacher, :student]
end
class Teacher < AR
belongs_to :user, class_name: "user", foreign_key: "user_id"
end
class Student < AR
belongs_to :user, class_name: "user", foreign_key: "user_id"
end
【问题讨论】:
-
在您的代码 sn-p 中使用完整形式的
AR。通过关联方法中提供的可选参数conditions提及rails 版本,因为它闻起来像旧版本。此外,您不需要提供class_name和foreign_key,因为 Rails 按照惯例考虑它们。 -
ApplicationRecord, 5.2.0 rails 我知道条件已被弃用,但还能使用什么?
-
在您的情况下使用单表继承一定是一个不错的选择。
-
使用单表继承你会得到 3 个模型:用户、教师和学生,但它都是 1 个表,你可以通过表单来区分用户的类型......跨度>
标签: ruby-on-rails ruby rails-models