2
我有一个Rails 3网站,我正在使用的用户是在“文档”上进行操作。如何根据用户角色限制返回的记录?
如果每个文件在我的文档控制器有一个USER_ID然后编辑方法,我可以将结果限制为当前用户喜欢的东西拥有的文件:
@doc = current_user.documents.find(params[:id])
respond_with(@doc)
不幸的是,它不是那么简单。每个用户都可以通过中间“订阅”与文档建立关系 - 他们可以是所有者,编辑或读者。
所以,现在,在我的编辑方法中,我希望能够将检索到的文档限制为所有者或编辑者。我该怎么做呢?目前,我有喜欢我的文档模型范围:
scope :editable_by, lambda { |user| joins(:subscriptions).where("user_id = ? AND (subscriptions.role = ? OR subscriptions.role = ?)", user.id, Subscription::ROLES['owner'], Subscription::ROLES['editor']) }
,这样我就可以去我的编辑方法:
@doc = Document.editable_by(current_user).find(params[:id])
是否有更好的办法吗?
Ta。那我就去吧。很高兴知道我有点正确。 – kmc 2011-01-14 11:19:59