使用Rails + Devise + Pundit,如何为登录用户提供其个人资料的“公开预览”视图?

时间:2017-03-10 18:13:28

标签: ruby-on-rails devise pundit

用户个人资料页面的show方法使用典型的权威政策根据网页所有者是否已登录来显示/隐藏特定于用户的操作(例如编辑)。

所以show视图例如包含:

- if policy(@user).edit?
  = link_to "Edit Profile", edit_user_path(@user)

我还想添加一个链接,在新标签页中显示登录用户页面对公共用户(未登录)的外观,理想情况下无需创建全新视图,也许是添加内容显示网址的“公共”网址参数,如

- if policy(@user).edit?
  = link_to "Show Public Version", user_path(@user, public_view: 'yes'), target: "_blank"

当然,通过更改视图中的所有基于策略的逻辑,很容易暴力破解

- if policy(@user).edit?

- if policy(@user).edit? && !@public_view

(当params [:public] =='yes'时,控制器中的@public_view设置为true)

但我希望有一种更干净,更清洁的方法,或许对实际的UserPolicy方法进行一些修改?

0 个答案:

没有答案