我对Rails相当新,如果它不是我所说的“实例变量”,请道歉!
我正在使用Devise进行身份验证,因此可以在整个应用程序中使用current_user之类的东西。我正在构建的应用程序有一个User模型,还有一个Keyholder模型(对于该用户来说是一种主持人),以及一个Guest(对该用户具有只读权限的一些东西)。
我想知道的是 - 我可以设置它以便我可以使用例如access_user以keyholder身份登录以访问与current_user相同的对象 - 如果是,我在哪里将代码放入我的应用程序?它很快变得非常冗长,而且不像Rails那样不得不重复自己。
我想要实现的是能够使用'access_user'而不是current_user,这样无论是用户,密钥持有者还是访客登录,都会使用用户对象。
例如:
def access_user
if user_signed_in?
access_user = current_user
end
if keyholder_signed_in?
access_user = current_keyholder.user
end
if guest_signed_in?
access_user = current_guest.user
end
end
谢谢!
答案 0 :(得分:0)
您可以在ApplicationController中设置此方法,并将其公开给辅助方法。
class ApplicationController
helper_method :access_user
def access_user
#blah blah
end
end
当ApplicationController中的方法时,它可供所有控制器使用。
当您使用helper_method
时,它将作为辅助方法公开,以便在View中使用。有关helper_method
:http://apidock.com/rails/ActionController/Helpers/ClassMethods/helper_method
答案 1 :(得分:0)
Class level instance variables也可以帮到你。
def access_user
if user_signed_in?
@access_user = current_user
end
if keyholder_signed_in?
@access_user = current_keyholder.user
end
if guest_signed_in?
@access_user = current_guest.user
end
end