我正在为我的应用程序做一个报告系统。 例如,我创建了一个ReportKind模型,但由于我可以报告很多东西,我想要创建不同的报告种类组。由于他们共享很多行为,我试图使用继承。Rails模型继承的形式
所以我主要型号:
model ReportKind << ActiveRecord::Base
end
和例如创建:
model UserReportKind << ReportKind
end
在我的桌子report_kinds我已经类型列,直到这里的所有工作。 我的问题是在窗体/控制器。
当我做ReportKind.new
时,我的表单是用'* report_kind *'前缀构建的。 如果获得UserReportKind,即使通过,表单也会构建'user_report_kind'前缀。
这个乱七八糟的东西在控制器里,因为有时我会有params [:report_kind],有时params [:user_report_kind]等等,对于我做的每一个继承。
有没有办法强制它使用'report_kind'前缀? 另外,我不得不在控制器中强制使用'type'属性,因为它没有直接从表单中获取值,是否有一种很好的方法可以做到这一点?
路由是另一个问题,因为它试图基于继承的模型名称来构建路由。我通过在指向同一控制器的路由中添加其他模型来克服这一点。
<%= form.hidden_field:type,:value =>'UserReportKind'%> 为我工作。 – cider 2013-03-13 16:37:09