如何使用范围在active_admin中过滤多对多关联

时间:2012-07-24 06:08:28

标签: ruby-on-rails ruby-on-rails-3 scope associations activeadmin

我只想在索引页面中添加范围,以便我可以过滤legal_cases,其中任何specific role都包含在他们的角色关联中,角色和LegalCase有多对多关联 我试过了

ActiveAdmin.register LegalCase do
  scope :film_maker, joins(:roles).where('roles.name = ?', "Film Maker")
end

但是我收到了这个错误

undefined method `joins' for #<ActiveAdmin::ResourceDSL:0x9ca28f4>

任何帮助,请问我应该在这里使用什么而不是加入?

3 个答案:

答案 0 :(得分:0)

我用过这样的一个

ActiveAdmin.register LegalCase do

  controller do
    def scoped_collection
      end_of_association_chain.joins("left join users on users.id = bookings.user_id").select('bookings.*, users.*').order('users.name asc')
    end
  end
end

答案 1 :(得分:0)

为您要过滤的模型添加范围,例如

class LegalCase < ActiveRecord::Base

  ...

  scope :film_makers, -> { joins(:roles).where(roles: { name: 'Film Maker' }) }
end

答案 2 :(得分:0)

我有一个类似的案例,我在我的申请中这样做

ActiveAdmin.register Restaurant do
  scope("All"){|scope| scope.order("created_at desc")}

    Cuisine.all.each do |c|
      scope(c.name) { |scope| scope.joins(:cuisines).where("cuisines.id=?",c.id)}
    end
end