如果我有一个名为Group的类,那个类我有一个 has_many:用户
我想在Group类中添加一个方法,以查看特定用户是否在该组中。如果我正在使用Devise身份验证,我可以调用current_user。
所以我想我的第一个问题是我可以从模型中调用current_user,还是需要将其传递给方法?
我的第二个问题是我应该能够做以下的事情吗?
def has_access?
!current_user.nil && users.where(:id == current_user.id).count(:id) > 0
end
答案 0 :(得分:2)
您不能在模型中调用current_user - 它仅在控制器和视图的范围内可用。
这意味着您的方法看起来会有所不同 - 或许尝试以下方法:
def has_access?(user)
user.present? && users.where(:id => user.id).any?
end
答案 1 :(得分:0)
current_user是一个帮助器,因此您无法从模型中访问它,并且必须将其作为参数传递给方法,如上所述。
关于你的第二个问题,你能告诉我这个类定义了什么? 据我所知,它似乎是在组模型定义中,因为您使用“用户”,我猜是has_many关联。 如果是这样,答案显然是否定的,因为“current_user”在这里是未知的。