我会尝试以不同的方式解释这一点,因此它更有意义。在我的系统中,有一些课程由步骤组成。有许多类型的步骤:视频,测验,文本,调查......等。这些步骤中的每一步都共享公共数据,例如标题,摘要,客户端和位置。但每个步骤的数据都有完全不同的模型。测验步骤有许多不同的表格和字段,其中一个文本步骤,实际上只有一个额外的字段。因此,我不认为单表继承有效。
但是,当我想立即查看所有步骤并显示和编辑链接时,问题就出现了。
由于每个步骤类型都有不同的控制器,我不想在我的控制器中执行类似的操作:
if @step.type=="Quiz"
edit_step_quiz_path(@step.getSpecificStepObject())
elsif @step.type == "Text"
edit_step_text_path(@step.getSpecificStepObject())
elsif @step.type=="Video"
edit_step_video_path(@step.getSpecificStepObject())
end
我应该让我的主“步骤”控制器的编辑方法执行逻辑并重定向到适当的位置进行编辑,以便我的视图干净吗?
答案 0 :(得分:2)
我假设您的意思是考虑将该代码放在您的视图中,而不是您的控制器。我会定义一个辅助方法:
def edit_step_path(step)
send("edit_step_#{step.type.downcase}_path".to_sym, step.getSpecificStepObject)
end
然后你可以拨打edit_step_path(@step)
答案 1 :(得分:1)