2012-07-10 44 views
0

在我的数据库中,我有许多“项目”,每个项目都有许多与之关联的“设备”。 admin_users与一个或多个项目相关联。我注册了一个显示数据库中设备列表的资源。该列表可以按项目过滤。是否可以预先筛选Activeadmin索引视图?

我想要做的是确保当用户登录并进入设备索引视图时,他/她只能查看属于他的项目的设备。这是通过预过滤索引视图完成的吗?如果是这样,我该怎么做?有没有更好的方法来解决这个问题?

在此先感谢!

回答

0

我不认为过滤器是这样做的apropiated。我会做这在控制器设置正确的@devices实例VAR

class DevicesController < ApplicationController 
    def index 
    @devices = current_admin_user.devices 
    end 
end 

,如果你admin_user不知道这些设备,你可以做这样的事情

class AdminUser < ActiveRecord::Base 
    has_many :projects 
    has_many :devices, :through => :projects 
end 

这是否对你的工作?

+0

感谢您的回答。不幸的是它没有工作。首先,'def index'里面的代码似乎没有被执行。其次(也许因此)在'index do'内的devices.rb中,显示列信息的所有调用,例如'column(“Account”)do | device | ...'是针对未过滤的设备列表(即全部设备)执行的。我尝试添加到deviced.rb'scope_to:current_admin_user,:association_method =>:projects',但它抱怨“SQLite3 :: SQLException:no such column:devices.id” – Dario 2012-07-13 11:06:47