使用pundit gem时授权相关对象

时间:2013-11-12 13:30:09

标签: ruby-on-rails pundit

如果我有用户对象,并且用户有一个basicinfo。在用户显示操作中,我有:

def show
  @user = User.find params[:id]
  authorize @user
end

在show.html.erb中,我必须显示用户的basicinfo,例如:

User name is: <%= @user.basicinfo.name %>

在这种情况下,我是否还应该在用户show action中授权basicinfo?

def show
  @user = User.find params[:id]
  authorize @user
  authorize @user.basicinfo, :show?
end

1 个答案:

答案 0 :(得分:1)

授权适用于整个行动。

如果你想在视图中过滤掉一些元素,你可以在临时的基础上,基本上应用你在xxxPolicy类中使用的任何属性(上面没有提供)

通过Pundit处理用户授权可能过于复杂

def initialize(user, user)

在用户操作方面,我肯定会对视图进行过滤