我在使用 devise 和 cancan 时候,学习 devise 的时候网上看了很多的教程特别在 railscasts 上。可能 devise 比 cancan 容易的原因吧。学习 cancan 的时候就很吃力,感觉好像 github 上的讲的不够清晰,还是我看不明白。在使用过程中,好多错误。 例如,我看其中一个源码,出现下面一堆让我不懂的东西,
def role_symbols
roles.map(&:to_sym)
end
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
def role?(role)
roles.include? role.to_s
end
一开始的时候,我在 user.rb 上,写了
ROLES = %w[admin moderator finance]
然后也 migrate 里,
add_column :users, :role, :string
可是后面认真一看,别人怎么出现一个 roles_mask,这就不明白啦,有点混乱了。而且因为我没有提供注册,只是通过rake db:seed
设置用户,
admin_user = User.create(:email => "[email protected]",
:password => "123456",:role => "finance")
可是通过rails dbconsole
时候,可是数据库却没有出现
4|ray@vip.com|$2a$10$NNK51QtnvXuKaAQq9cGx0uOusatjLTL30uX/5JHCYeCiXEjSwSSdO||5|2012-03-08 08:09:54.442520|2012-03-08 07:46:39.400685|127.0.0.1|127.0.0.1||
请问在不提供用户注册,只自己录用用户的情况下。怎么设计 cancan 比较好呢? 因为用户数量不多,所以不提供注册。请问谁有写过什么关于 cancan 的文章,或者国外详细的呢? 折腾了一天都没有搞出个究竟,感激不尽~