2012-07-10 70 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

相關問題