rails cancan first time use with roles_mask -
first time use of cancan roles_mask. keep getting undefined method '&' "1":string
in edit view.
form.html.erb
<% 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 |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
are defining roles_mask somewhere "1"? roles accessor dying because bitwise & operator not defined string class. may need roles_mask_var.to_i calling roles setter.
ian.
Comments
Post a Comment