试图确保我干净利落地建模

时间:2011-03-01 19:52:56

标签: ruby-on-rails

我会尝试以不同的方式解释这一点,因此它更有意义。在我的系统中,有一些课程由步骤组成。有许多类型的步骤:视频,测验,文本,调查......等。这些步骤中的每一步都共享公共数据,例如标题,摘要,客户端和位置。但每个步骤的数据都有完全不同的模型。测验步骤有许多不同的表格和字段,其中一个文本步骤,实际上只有一个额外的字段。因此,我不认为单表继承有效。

但是,当我想立即查看所有步骤并显示和编辑链接时,问题就出现了。

由于每个步骤类型都有不同的控制器,我不想在我的控制器中执行类似的操作:

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

我应该让我的主“步骤”控制器的编辑方法执行逻辑并重定向到适当的位置进行编辑,以便我的视图干净吗?

2 个答案:

答案 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)

嘿克里斯, 我认为你走错了路。看看Ryan Bates的这个截屏视频。 我不太确定,如果你的模特设计合理。

http://railscasts.com/episodes/217-multistep-forms