我想限制用户在帖子上投票或投票,每个用户只能为每个帖子投一票。在创建新关系之前,我必须检查用户是否在帖子上投票。
我已经将CanCan用于其他限制,例如“用户只能编辑自己的帖子”,但这种情况有所不同,所以我想要最好的做法。在为模型添加唯一性验证后,我是否应该通过CanCan或仅在控制器中实现上述规则(“每个帖子和用户一票”)?
答案 0 :(得分:1)
对我来说听起来不像,这是一个应该在模型层IMO中执行的验证。
答案 1 :(得分:1)
对我而言,这不是CanCan的工作。粗略地回顾一下这个问题,我的感觉是我会在模型中创建一个谓词方法,然后从我的视图中调用它。
def votable?
if blahblahblag
true
else
false
end
end
在(haml)视图中:
- if model_name.votable?
= cool_markup_tag
这样的东西......只是粗略的草图,但是对我来说,这样可以保持控制器清洁并检查我认为它属于的模型(并且是Logan的评论/答案)。