ruby-on-rails - 在 Rails 中使用隐藏字段的替代方法。保证安全

标签 ruby-on-rails ruby-on-rails-3

我正在建立一个帖子系统,其中用户的帖子必须始终由 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/

相关文章:

ruby-on-rails - 命名约定 : UserGroup vs Group - TaskType vs Type

ruby-on-rails - 使用表单提交时如何下载 prawn pdf 文件?

ruby-on-rails - 如何检测给定文本的语言

ruby-on-rails - 有没有办法从 Rails 控制台查看方法的源代码?

ruby-on-rails - Heroku 数据库 :push error (rails)

ruby-on-rails - 如何无限制地查询ActiveResource?

ruby-on-rails - 工厂女孩: uninitialized constant

ruby - 计算 Ruby 中的第 95 个百分位数?

ruby-on-rails - 如何使用回形针保存raw_data照片

mysql - 对打乱的 ActiveRecord 查询进行分页