我正在建立一个帖子系统,其中用户的帖子必须始终由 super 用户审核,除非他们是“已验证”用户 (User.verified = true)
我打算在 User 模型中设置一个 bool 值列,:verified 如果这是真的,那么允许他们发帖并规避审核。
因此,当用户要发帖时...我知道我可以轻松地为帖子设置一个隐藏字段。例如,在我的帖子表单中,我可以添加
<%= f.hidden_field :approved, :value => 1 if current_user.verified == 1 %>
但是,我知道这并不安全,任何人都可以轻松地使用 firebug 来修改它。
将此逻辑移动到模型/ Controller 中的最佳做法是什么,或者是否有涵盖此类内容、覆盖或修改“默认”创建/更新操作的良好资源链接?
谢谢
根据下面的回答,这是我现在的 Post 模型中的内容:
#If user is verified, set approved column to true
before_save :check_for_verified
def check_for_verified
approved = user.verified?
end
但是,现在不允许我保存,它不报错,只是不允许保存。
最佳答案
您认为这不属于 View 是正确的。
有很多方法可以解决这个问题。一种方法是在模型上设置 before_create 回调,如果用户通过验证则设置为 approved
class Post
before_create :approve_if_user_verified
def approve_if_user_verified
approved = user.verified?
end
关于ruby-on-rails - 在 Rails 中使用隐藏字段的替代方法。保证安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14944738/