首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查has-many关系中的角色

检查has-many关系中的角色
EN

Stack Overflow用户
提问于 2011-05-16 23:57:41
回答 2查看 181关注 0票数 1

使用Cancan,所以我需要检查用户的角色。

在我的用户模型中,我有一个函数: role?( role ),即role?(:admin),它检查用户是否有角色。

代码语言:javascript
复制
def role?(role)
   roles.include? role.to_s
end

这不起作用,我必须指定名称列吗?

解决方法:过一段时间后,我会把答案写下来。

EN

回答 2

Stack Overflow用户

发布于 2011-05-17 01:25:51

您正在将字符串与对象进行比较

代码语言:javascript
复制
def role?(role)
  !roles.first(:conditions => {:name => role.to_s}).nil?
end

尝尝这个?

基于Dmitriy Likhten的答案的替代方案

代码语言:javascript
复制
def role?(role)
  roles.collect{|r| r.name }.include? role.to_s
end
票数 2
EN

Stack Overflow用户

发布于 2011-05-17 01:30:38

你可以直接对它进行在线过滤...

代码语言:javascript
复制
roles.select(&:to_s).include?(role.to_s)

我的方法和Jimmy的方法之间的区别取决于角色是否已经在内存中。如果是,则过滤速度更快,如果不是,则查询更好。

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

https://stackoverflow.com/questions/6020026

复制
相关文章

相似问题

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