我有一个模型用户和角色。
USER belongs_to ROLE,您可以在此模型中看到
class User < ApplicationRecord
belongs_to :role
# this method return true or false
def is_admin?
self.role.name == 'admin'
end
end
class Role < ApplicationRecord
has_many :users
end
role_id存在于用户表
中但是当我尝试访问&#39; is_admin?&#39;在rails控制台中的方法,&#34;未定义的方法`is_admin?&#39;为#&#34;出现
u = User.find_by_email('teste@teste.com')
=> #<User id: 2, email: "teste@teste.com", created_at: "2017-05-30 16:57:57", updated_at: "2017-05-30 17:00:44", role_id: 6>
u.is_admin?
NoMethodError: undefined method `is_admin?' for #<User:0x007fd5233c1ab8
我该怎么做?
答案 0 :(得分:0)
我不知道为什么,但我以这种方式解决了这个问题
我只是创建了另一种方法,现在它已经工作了
def has_role role
self.role.name == role
end
答案 1 :(得分:0)
您正在使用rolify gem作为角色吗?如果是,那么请遵循以下:
如果要检查is_admin?然后修改你的is_admin?方法为: - &gt;
def is_admin?
has_role?('admin')
end
然后尝试这个
u = User.find_by_email('teste@teste.com')
u.is_admin?
如果用户没有'admin'角色,您可以通过以下方式分配: - &gt;
u.add_role :admin