我正在建立一个帖子系统,用户的帖子总是必须由超级用户审核,除非他们是“经过验证”的用户(User.verified = true)
我打算在User模型中设置一个布尔列,:已验证,如果是,则允许他们发布和规避审核。
因此,当用户发布时...我知道我可以轻松地为帖子设置隐藏字段。例如,在我的帖子表单中,我可以添加
<%= 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
然而,它现在不允许我保存,它没有错误,只是不允许保存。
答案 0 :(得分:4)
您觉得这不属于视图是正确的。
你可以通过很多方式解决这个问题。一种方法是在模型上设置before_create回调,如果用户已经过验证,则设置为已批准
class Post
before_create :approve_if_user_verified
def approve_if_user_verified
approved = user.verified?
end