0
처음으로 roles_mask와 함께 cancan을 사용합니다. 계속 편집보기에서 undefined method '&' for "1":String
을 유지하십시오.레일 cancan을 처음으로 roles_mask와 함께 사용
<% for role in User::ROLES %>
<%= check_box_tag "user[roles][]", role, @user.roles.include?(role) %>
<%=h role.humanize %><br />
<% end %>
<%= hidden_field_tag "user[roles][]", "" %>
<% end %>
user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me, :firstname, :lastname, :username, :roles
ROLES = %w[admin manager employee banned]
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum
end
def roles
ROLES.reject do |r|
((roles_mask || 0) & 2**ROLES.index(r)).zero?
end
end
def role?(base_role)
ROLES.index(base_role.to_s) <= ROLES.index(role)
end
def is?(role)
roles.include?(role.to_s)
end
end
나쁨. 마이 그 레이션에 "string"이 미쳐서 roles_mask가 정수가 아닌 문자열이되었습니다. – pcasa