用户#edit需要根据谁查看它而有所不同

时间:2016-08-22 03:37:44

标签: ruby-on-rails

我创建了一个人们可以订阅服务的网站。

目前,#edit用户可以自己编辑密码等信息。

但是,我希望管理员能够访问编辑页面,以便能够编辑expiry_date之类的内容。显然,用户自己无法编辑自己的订阅到期日期,因此我想将此限制仅限于管理员。我正在考虑使用<%= if current_user.admin? %>之类的东西并将有效期限表格字段放入其中就足够了,但我错了吗?

1 个答案:

答案 0 :(得分:1)

不,你是对的。为简化起见,仅当current_useradmin时才显示表单字段。

在您admin?中创建方法application_helper

def admin?
  current_user.admin?
end

然后在您的表单中添加

<% if admin? %>
  <!-- display the field -->
<% end %>

但是,如果您遇到许多操作只需要管理员查看的情况,我建议您为namespace创建单独的admins

有关详情,请参阅http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing