使用Cancan,所以我需要检查用户的角色。
在我的用户模型中,我有一个函数: role?( role ),即role?(:admin),它检查用户是否有角色。
def role?(role)
roles.include? role.to_s
end这不起作用,我必须指定名称列吗?
解决方法:过一段时间后,我会把答案写下来。
发布于 2011-05-17 01:25:51
您正在将字符串与对象进行比较
def role?(role)
!roles.first(:conditions => {:name => role.to_s}).nil?
end尝尝这个?
基于Dmitriy Likhten的答案的替代方案
def role?(role)
roles.collect{|r| r.name }.include? role.to_s
end发布于 2011-05-17 01:30:38
你可以直接对它进行在线过滤...
roles.select(&:to_s).include?(role.to_s)我的方法和Jimmy的方法之间的区别取决于角色是否已经在内存中。如果是,则过滤速度更快,如果不是,则查询更好。
https://stackoverflow.com/questions/6020026
复制相似问题