Ruby on rails 3 允许用户在Rails中创建自己的模型
在我的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方面没有经验,但我的想
SafetyTest
和TeamDue
。它们的字段完全相同,只是名称不同。每个实例都属于aStudent
我想添加创建遵循上述两种结构的新模型的功能。所以我可能想添加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的解决方案更简单。