首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_mask和Rails

_mask和Rails
EN

Stack Overflow用户
提问于 2010-03-19 23:35:11
回答 1查看 187关注 0票数 2

因此,我试图让cancan gem与我的Rails3应用程序一起工作,但我遇到了一个问题。

我试图复制Ryan Bates (gem的创建者)在他的screen cast中使用的代码,但我得到一个错误,指出roles_mask不是一种方法。我认为_mask方法在某个时候已经从Ruby/Rails中删除了,现在我想知道替代方法是什么。

下面是我的user.rb模型中的代码:

代码语言:javascript
复制
  named_scope :with_role, lambda { |role| {:conditions => "roles_mask & #{2**ROLES.index(role.to_s)} > 0 "} }  

  ROLES = %w[admin student principal admissions]

  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?  
    roles.include? role.to_s  
  end

  def role_symbols
    roles.map(&:to_sym)
  end

我使用的是Rails3和Ruby1.9.2dev

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-20 07:42:12

听起来您的users表缺少roles_mask列,您确定已包含该列并迁移了数据库吗?

来自上一集的http://asciicasts.com/episodes/189-embedded-association

我们要做的第一件事是将一个名为roles_mask的新整数列添加到users表中,以存储位掩码值。

脚本/生成迁移add_roles_mask_to_users roles_mask:integer

然后运行迁移

rake db:迁移

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2478536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档