gpt4 book ai didi

ruby-on-rails - Rails 5 - 创建两个继承自基础模型的新模型

转载 作者:行者123 更新时间:2023-12-05 07:38:48 25 4
gpt4 key购买 nike

假设我有一个 User 模型及其属性(first_name、last_name 等),我想创建两个新模型 TeacherStudent

它们将继承User 模型属性,并且它们将具有特定的属性。例如,Student 模型将具有 file 属性,而 Teacher 模型将具有 subject 属性。

我正在阅读有关 STI(单表继承)和多态关系的内容。

我应该寻找什么来实现这一点?你有什么例子可以展示吗?

最佳答案

如果您在users 表中创建一个名为“type”的属性,Rails 会自动假设您想要实现STI。然后,创建 Teacher 和 Student 模型就像扩展 User 类一样简单。子类的名称将自动插入到类型列中,并按照您的预期用于过滤查询。

用户.rb

class User < ApplicationRecord
end

teacher.rb

class Teacher < User
end

学生.rb

class Student < User
end

使用 STI,您可以将任一模型将使用的所有列放在同一个表中,并简单地忽略(默认为空)那些在任何给定情况下都不适用的列。

多态关系允许两个或多个表填充相同的关联。如果您想使用三个不同的表,但要确保用户有一个教师 一个学生,则可以将其建模为多态 belongs_to。缺点是您需要返回到用户模型才能访问共享信息,即 teacher.user.first_name

关于ruby-on-rails - Rails 5 - 创建两个继承自基础模型的新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com