两个模型类 - 一个数据库表

时间:2010-01-29 05:10:00

标签: ruby-on-rails model-view-controller orm

你有没有这样做过?

我正在写一个Rails应用程序。我有一种情况,我有一个任务模型(和表),任务有属性,允许查看它的人,和层次结构(它可能在项目或业务下)。

我还有一个AssignmentController,它将一些视图和功能暴露给分配给Task的个人--AssignmentController使用Task.find来获取任务,并且是与Task相同的对象 - 它只是由受让人更新并且受让人只能使用几列。在这种情况下,我想隐藏一些UI,更改布局以适应业务,层次结构对任务的受让人无关紧要。

我正在考虑的是创建一个任务模型和一个指向模型,它们都指向同一个表(任务表)。我不明白为什么我不应该这样做。它允许我精简Assignment模型类并隔离仅由Task使用的方法。据我所知,这也会使代码更加清晰。

当我在网上搜索时,我看不到这种模式。对此有何看法?

欣赏你的想法......

2 个答案:

答案 0 :(得分:1)

如果我理解正确你想要子类表:) 好主意,不明白为什么它不起作用...... set_table_name“tasks”将执行此操作,或者只是将Task模型子类化。 但是在这两种情况下,你都会遇到关联问题,你必须定义belongs_to:task和belongs_to:任何has_many关联的赋值,你想要正确地做...

编辑: 其实忘了我说的:) http://railscasts.com/episodes/154-polymorphic-association

答案 1 :(得分:0)

您应该在受理人和任务之间有一个联接表。如果有关天气的陈述,您的建议会导致您的意见被遗忘,您是否有受让人或任务。如果您发现在两者之间使用类似的html块,则可以简单地使用partial。

此外,您的提案在某种程度上违反了数据库规范化。规范化不仅仅是你今天所需要的,而是你明天可能需要的。如果您没有关于受让人的信息而不是用户名,则可以为两个模型(类型)提供相同的表。但是,如果您想获得有关Assignees的更多信息,那么以后呢?

相关问题