Mar*_*rio 2 ruby ruby-on-rails has-and-belongs-to-many ruby-on-rails-4 pundit
我当前的Index操作如下所示:
def index
@proposals = current_user.proposals
end
Run Code Online (Sandbox Code Playgroud)
但我想这样做:
def index
@proposals = policy_scope(Proposal)
end
Run Code Online (Sandbox Code Playgroud)
我和has_and_belongs_to之间有关系.UserProposal
我开始Pundit在我的应用程序中使用gem,但我不知道如何定义范围以便为普通用户提供上面显示的行为.
我想做这样的事情:
class Scope < Scope
def resolve
if user.admin?
scope.all
else
user.proposals # HOW DO I DO THIS WITH THE SCOPE?
end
end
end
Run Code Online (Sandbox Code Playgroud)
如何user.proposals使用范围变量?我知道,如果我有一个has_many和belongs_to关系,我可以这样做:
else
scope.where(user_id: user.id) # RIGHT?
end
Run Code Online (Sandbox Code Playgroud)
但就HABTM而言,我不知道该怎么做.
有帮助吗?
您可以使用joins获取与用户相关的提案.像这样的东西:
def resolve
if user.admin?
scope.all
else
scope.joins(:users).where(proposals_users: { user_id: user.id })
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |