用户个人资料页面的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方法进行一些修改?