我有一个用来管理用户的dashboard_controller。下面是控制器:
class DashboardController < ApplicationController
before_action :authenticate_user!
def index
if current_user.admin?
@users = current_user.get_organization_users
else
flash[:notice] = "Unauthorized Page View"
redirect_to(tasks_url)
end
end注意,我使用的是@users = current_user.get_organization_users。下面是我的用户模型中的get_organization_users方法...
def get_organization_users
self.organization.users
end我该如何用作用域替换它呢?我试过..。
scope :organization_users, -> { self.organization.users }...but没有工作。感谢您的帮助。
发布于 2016-08-17 03:08:53
在内部,Active record converts scopes into class methods。
这意味着您不能将实例方法get_organization_users替换为作用域,并期望在类的实例current_user上调用它。
您可以做的是创建一个作用域并将一个参数(很可能是用户id)传递给它,然后直接在user类上调用该作用域。
如果你愿意,我可以举一个例子,但我认为这种方法比期望的方法要长得多。
https://stackoverflow.com/questions/38982364
复制相似问题