3

我正在建立一个帖子系统,用户的帖子总是必须由超级用户审核,除非他们是“经过验证的”用户(User.verified = true)

我打算在 User 模型中设置一个布尔列, :verified 如果这是真的,那么允许他们发布和规避审核。

所以,当用户去发帖时……我知道我可以很容易地为帖子设置一个隐藏字段。例如,在我的帖子表单中,我可以添加

<%= f.hidden_field :approved, :value => 1 if current_user.verified == 1 %>

但是,我知道这并不安全,任何人都可以轻松地使用 firebug 来修改它。

将此逻辑移动到模型/控制器中的最佳实践是什么,或者是否有一个很好的资源链接可以涵盖此类事情,覆盖或修改“默认”创建/更新操作?

谢谢

根据下面的答案,这是我现在在我的 Post 模型中拥有的内容:

#If user is verified, set approved column to true
before_save :check_for_verified

def check_for_verified
    approved = user.verified?
end

但是,它现在不允许我保存,它不会出错,只是不允许保存。

4

1 回答 1

4

您认为这不属于视图的感觉是正确的。

有很多方法可以解决这个问题。一种方法是在模型上设置 before_create 回调,如果用户通过验证,则设置为批准

class Post

before_create :approve_if_user_verified

def approve_if_user_verified
  approved = user.verified?
end
于 2013-02-18T20:32:04.420 回答