我正在创建一个学习管理系统,管理员可以在其中创建课程并将其分配给用户。A课程has_many课程,用户将课程标记为完成。
现在,我想扩展这个特性并添加一个文档模型,管理员可以在其中上传文档并将其分配给用户。然后,用户必须来到平台并将文档标记为已完成,这与他们与课程的交互方式类似。
我知道我应该从AssignableMaterial这样的模型开始,并从AssignableMaterial继承课程和文档,但我没有想到我会添加文档。在添加文档的同时仍然使用课程中的“分配”功能和课程中的“标记为完成”功能的最佳方法是什么?
文档可以从课程继承吗?或者我是否必须将所有与课程/课程相关的方法移动到一个父模型AssignableMaterial中,然后从该父模型继承文档?
发布于 2015-05-08 04:28:13
也许最好的策略是将Document和module的共同特性提取到一个“关注点”中-- Document和module将保持从ActiveRecord::Base直接继承的单独类,在数据库中有单独的表,但是它们之间的共同行为将存在于一个模块中,这两个模块都包含。
有关概述,请参阅此问题:How to use concerns in Rails 4
https://stackoverflow.com/questions/25373782
复制相似问题