【发布时间】:2010-09-01 15:52:49
【问题描述】:
我有一个带有标题的服务模型:字符串描述:字符串日期:日期时间。我想实现一个系统来根据日期模式创建多个服务,例如当用户为 10 月 20 日创建新服务时,他可以选择每月“重复”一次,持续 5 个月。由于 10 月 20 日、11 月 20 日等,最终结果应该是创建了 6 个服务。 我实现这个的方式是有效的,但真的很难看。在我看来,我有这样的事情:
<input type="radio" name="each" value="none" checked="true"/>No<br/>
<input type="radio" name="each" value="week"/>Each week for <input type="text" name="weeks_number" /> weeks.<br/>
<input type="radio" name="each" value="month"/>Each month for <input type="text" name="months_number" /> months.<br/>
在我的控制器中,我计算各种服务将发生的日期,然后创建 N 个服务对象(其中 N 是在 params[:weeks_number] 或 params[:months_number] 中指定的数字)并保存它们中的每一个。
这听起来不太好,是吗?首先,我正在考虑将创建“多个”服务的所有逻辑转移到模型中。下一件大事是:如何清理视图和控制器?我希望我的控制器尽可能简单
@service = Service.new(params[:service])
为了做到这一点,我必须更改模型中的某些内容(这应该称为虚拟属性),以便让控制器相信类似
@service.repeat_method = "month"
@service.repeat = 6
实际上是有道理的,当调用@service.save 时会在我的数据库中创建 6 个不同的行。
这是我遇到困难并需要帮助的地方。我的推理有意义吗?以及如何实现?
谢谢。
【问题讨论】:
标签: ruby-on-rails model-view-controller