模型约束 - 用户每次只能投票一次

时间:2014-03-27 16:10:41

标签: ruby-on-rails ruby-on-rails-4 cancan

我想限制用户在帖子上投票或投票,每个用户只能为每个帖子投一票。在创建新关系之前,我必须检查用户是否在帖子上投票。

我已经将CanCan用于其他限制,例如“用户只能编辑自己的帖子”,但这种情况有所不同,所以我想要最好的做法。在为模型添加唯一性验证后,我是否应该通过CanCan或仅在控制器中实现上述规则(“每个帖子和用户一票”)?

2 个答案:

答案 0 :(得分:1)

对我来说听起来不像,这是一个应该在模型层IMO中执行的验证。

答案 1 :(得分:1)

对我而言,这不是CanCan的工作。粗略地回顾一下这个问题,我的感觉是我会在模型中创建一个谓词方法,然后从我的视图中调用它。

def votable?
  if blahblahblag
    true
  else
    false
  end
end

在(haml)视图中:

- if model_name.votable?
  = cool_markup_tag

这样的东西......只是粗略的草图,但是对我来说,这样可以保持控制器清洁并检查我认为它属于的模型(并且是Logan的评论/答案)。