我一直在阅读有关 Rails 安全问题的信息,而让我最担心的是批量分配。我的应用程序正在使用 attr_accessible,但是我不确定我是否完全知道处理暴露关系的最佳方法是什么。假设我们有一个基本的内容创建/所有权网站。用户可以创建博客文章,并拥有一个与该博客文章相关联的类别。
所以我有三个模型:
- 用户
- post:属于一个用户和一个类别
- 类别:属于用户
我允许对 category_id 进行批量分配,因此用户可以将其取消,将其更改为他们的类别之一,或者通过批量分配,我想他们可以将其更改为其他人的类别。这就是我有点不确定最好的方法是什么。
我调查的资源(特别是railscast #178和从该 railscast 提供的资源)都提到关联不应该是可批量分配的,这是有道理的。我只是不确定如何让用户以一种随意的方式更改帖子的类别。
关于如何最好地解决这个问题的任何想法?我看错了吗?
更新:希望能进一步澄清我的担忧。
假设我在 Post,我是否需要以下内容:
def create
@post = Post.new(params[:category])
@post.user_id = current_user.id
# CHECK HERE IF REQUESTED CATEGORY_ID IS OWNED BY USER
# continue on as normal here
end
这似乎是很多工作?我需要在更新和创建操作中检查每个控制器。请记住,不仅仅是一个 belongs_to 关系。