Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 允许用户在Rails中创建自己的模型_Ruby On Rails 3_Database Design - Fatal编程技术网

Ruby on rails 3 允许用户在Rails中创建自己的模型

Ruby on rails 3 允许用户在Rails中创建自己的模型,ruby-on-rails-3,database-design,Ruby On Rails 3,Database Design,在我的Rails项目中,我有两个相似的模型SafetyTest和TeamDue。它们的字段完全相同,只是名称不同。每个实例都属于aStudent 我想添加创建遵循上述两种结构的新模型的功能。所以我可能想添加MedicalForm。作为开发人员,我不想通过CLI执行此操作,而是在视图中提供一个界面,以便管理员可以添加自己的界面 假设SafetyTest、TeamDue和MedicalForm都可以用名称季节性要求来描述。实现我的想法的最佳和最可维护的方式是什么 我在Rails方面没有经验,但我的想

在我的Rails项目中,我有两个相似的模型
SafetyTest
TeamDue
。它们的字段完全相同,只是名称不同。每个实例
都属于
a
Student

我想添加创建遵循上述两种结构的新模型的功能。所以我可能想添加
MedicalForm
。作为开发人员,我不想通过CLI执行此操作,而是在视图中提供一个界面,以便管理员可以添加自己的界面

假设
SafetyTest
TeamDue
MedicalForm
都可以用名称
季节性要求
来描述。实现我的想法的最佳和最可维护的方式是什么


我在Rails方面没有经验,但我的想法是将上述模型合并到一个名为
季节性需求
的综合模型中,并为每种类型添加一个
类型
列。这方面的问题是:用户将如何创建一种新的季节性需求(例如
MedicalForm
)?当我试图为每个人显示一个单独的部分时,我如何确定季节性需求的类型呢?

没有太多使用,但让用户更改数据库的结构似乎不是一个好主意

可能有效的方法如下:

additional_student_columns
--------------------------
id
name
并添加另一个表:

additional_student_values
--------------------------
student_id
column_id
value (string)

这个缺点是它只能使用字符串值

。我会考虑多态性或STI关系。

有关更多详细信息,请访问:


我会使用STI来建模。

我不确定这将如何工作,而且使用两个表对我来说似乎不太像Rails。最后,我没有建议用户更改数据库;我建议的只是创建新字段。如果他们这样做了,我应该澄清这些“用户”将是管理员,他们只会破坏他们自己的网站。列id引用了其他的列。管理员可以通过在那里添加值来添加一个新列。我可能会同意你的解决方案,因为它非常简单。谢谢,我会研究这个。我已经了解了STI的基本知识,但问题是:STI需要为每种类型都提供一个子类——这应该是如何动态工作的?嗨,请检查一下如何动态创建ruby类,并查看一些ruby元编程,谢谢你们两位迄今为止的帮助。然而,我不确定这是否是适合我的解决方案。只需看看中所需的变通方法!也许njr的解决方案更简单。