如何为ActiveAdmin上的某些操作添加范围

时间:2014-02-10 16:23:43

标签: ruby-on-rails activeadmin

我有一个经典的帖子属于用户关联。我想将default_scope应用于#index等所有操作,因此它仅列出我的帖子。但我希望能够在我进入#show操作时看到来自任何人的帖子,如果按照指向它的链接。

如何避免将default_scope应用于该操作?

class Post < ActiveRecord::Base
  belongs_to :user
end

ActiveAdmin.register CertificationModel do
  controller do
    def scoped_collection
      current_user.posts
    end
  end
end

2 个答案:

答案 0 :(得分:5)

解决方案很简单:保留scoped_collection并重新定义#show行动。

ActiveAdmin.register Post do
  controller do
    def show
      @post = Post.find params[:id]
    end

    def scoped_collection
      current_user.posts
    end
  end
end

答案 1 :(得分:0)

您可以调用super来执行您不希望调用scoped_collection的其他操作。

ActiveAdmin.register Post do
  controller do
    def scoped_collection
      if ['index', 'action2', 'action3'].include?(params[:action])
        current_user.posts
      else
        super
      end
    end
  end
end