我正在使用rails 3实现一个Web解决方案,其中用户有一个“Actions”列表。它们可以是待处理的或经过验证的,只有管理员才能验证。
两个典型的行动是:
1 /报告错误的图片(如果管理员验证,那么图片将被删除,因此我们需要其ID) 2 /提交新类别(如果管理员验证,则将添加类别)
每个操作都有一个特定的点数,这个点将转向用户的声誉,这使得它成为继承的良好候选者(验证结束时的共享行为,子节点中的特定字段和方法实现)。
我计划在模型中使用“onValidate”方法删除图片(1 /)或添加新类别(2 /),但将它放在模型中感觉很奇怪。
您能告诉我如何改进设计并将其移到控制器中吗?
答案 0 :(得分:0)
如果我理解你正确描述了什么,我不明白为什么你认为在模型中使用这个代码是件坏事。我认为你的用户是has_many动作,动作有分数。验证某个操作后,其他一些对象的状态会发生变化(图片被删除,类别被添加')
class DeletePictureAction < Action
belongs_to :user
belongs_to :picture
def on_validate
do_subclass_specific_stuff_to(picture)
add_to_user_score(score)
end
end
这里似乎没有什么与路由有关,所以它在控制器中没有位置......