2014-07-04 60 views
3

我正在使用ActiveAdmin,並試圖使用我自己的範圍設置過濾器。下面是模式的一個樣本:關於「範圍」查詢的Active Admin過濾器

class MyModel < ActiveRecord::Base 
    scope :by_nationality, lambda { |nationality| OtherModel.where(nationality: nationality).map(&:my_model) } 
end 

這裏就是我如何設置過濾器:

ActiveAdmin.register MyModel do 
    filter :nationality 
end 

不幸的是,這並不工作:過濾盒不包含任何國籍的過濾器。 有誰知道我應該如何設置這個過濾器,如果它甚至有可能?

謝謝!

+0

什麼是基於myModel列?您可以像這樣指定/填充過濾器:'filter:nationality,as :: select,collection:OtherModel.count(group::nationality).sort_by {| k,v | v} .reverse.collect {| a | [「#{a [0]}(#{a [1]})」,a [0]]}' –

+0

MyModel類與國籍沒有關聯嗎? ActiveAdmin相應地處理belongs_to。 – baxang

+0

首先作用域應該返回關係對象,你的作用域返回數組... – Fivell

回答

1

首先,你需要爲MyModel

class MyModel < ActiveRecord::Base 
    belongs_to :other_model 
end 

副OtherModel你不需要一個範圍,過濾器適用於相關的模型

ActiveAdmin.register MyModel do 
    filter :other_model_nationality 
end