【发布时间】:2015-07-28 22:03:30
【问题描述】:
美好的一天,我正在使用 CanCanCan gem,这是一个 Ruby on Rails 的授权库,它限制了允许给定用户访问的资源。但是,当用户注册时,它可以正常工作,包括“管理员”和“禁止”在内的所有选项都会出现。我想隐藏这两个复选框并留下“客户”和“保姆”。我该怎么做?
用户.rb
class User < ActiveRecord::Base
ROLES = %i[admin sitter customer banned]
def roles=(roles)
roles = [*roles].map { |r| r.to_sym }
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
end
def roles
ROLES.reject do |r|
((roles_mask.to_i || 0) & 2**ROLES.index(r)).zero?
end
end
def has_role?(role)
roles.include?(role)
end
edit.html.erb
<% for role in User::ROLES %>
<%= check_box_tag "user[roles][#{role}]", role, @user.roles.include?(role), {:name => "user[roles][]"}%>
<%= label_tag "user_roles_#{role}", role.to_s.humanize %><br />
<% end %>
<%= hidden_field_tag "user[roles][]", "" %>
</div>
</div>
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 rubygems cancancan