Rails - ActiveRecord - 将元素组合与特定ID相关联

时间:2012-07-13 09:25:23

标签: ruby-on-rails ruby-on-rails-3 activerecord has-many-through

我有一个有趣的问题,我以前从来没有处理过。我正在寻找接近它的最佳方式。

我正在创建一个将学生链接到虚拟机的管理站点。学生可以注册多个课程,并且有一个virtual_machine_id,这取决于他们所学课程的组合。管理员可以创建新课程并(单独)将课程组合映射到特定的virtual_machine_ids。

1)将可变元素组合与特定ID相关联的最佳方法是什么?如果元素是固定的,我将创建一个表,其中包含每个元素的列和virtual_machine_id的一列。但是,由于这些元素可以更改(管理员添加或删除课程),如何以一种我可以轻松查询组合及其关联ID的方式映射它们?

2)现在,我让学生使用has_many:通过关联和第三个表与student_id和course_id映射到课程。如果我需要收集课程组合并将整个组合分配给一个virtual_machine_id(我无法将id分配给学生,因为他们可能拥有多个virtual_machine,具体取决于他们学习了多少课程),这是正确的方法吗? / p>

我将EAV(实体 - 属性 - 价值)模型视为一种解决方案,但普遍的共识似乎是因为您丢失了一些ActiveRecord功能,这是一个不好的主意。

1 个答案:

答案 0 :(得分:0)

如果您希望 EAV ActiveRecord ORM 一起使用,您可以查看hydra_attribute gem,它允许在运行时创建新属性并且有可能查找/排序/他们分组。

目前 0.3.2 版本不支持属性集,但在下一版本中我将添加此功能,您将能够分配唯一属性收集到每个学生记录。