Activeadmin: カスタムクエリでモデルレコードを選択するにはどうすればよいですか?

作成日 2013年02月06日  ·  3コメント  ·  ソース: activeadmin/activeadmin

こんにちは、

次の問題があります。 モデルレコードを出力しようとすると、 'dismiss'-field equal'FALSE'のレコードを除外したいと思います。 どうすればこれを行うことができますか? 'default_scope'なしで可能ですか?
私のコード例:

ActiveAdmin.register Approval do
  index do 
      column :id
      column 'Пользователя', :user
      column 'Заапрувил член клуба', :member
      column :dismiss
      default_actions
  end
end

最も参考になるコメント

Tnx。 解決:

ActiveAdmin.register Approval do
  index do 
      column :id
      column 'Пользователя', :user
      column 'Заапрувил член клуба', :member
      default_actions
  end
  controller do
    def scoped_collection
      Approval.where(dismiss: false)
    end
  end
end

全てのコメント3件

リソースコントローラーのscoped_collectionメソッドをオーバーライドして、カスタムクエリでリソースをフェッチできます。

ActiveAdmin.register Approval do
  index do 
      column :id
      column 'Пользователя', :user
      column 'Заапрувил член клуба', :member
      column :dismiss
      default_actions
  end

  def scoped_collection
    Approval.where(dismiss: false) # this could be   **Approval.dismissed**
  end
end

私はあなたが書いた方法でscoped_collectionをオーバーライドしようとしました。 ただし、すべてのレコードは引き続き出力されます。 結果として形成されるクエリは次のとおりです。

where Approval Load (0.2ms)  SELECT "approvals".* FROM "approvals" ORDER BY "approvals"."id" desc LIMIT 30 OFFSET 0

Tnx。 解決:

ActiveAdmin.register Approval do
  index do 
      column :id
      column 'Пользователя', :user
      column 'Заапрувил член клуба', :member
      default_actions
  end
  controller do
    def scoped_collection
      Approval.where(dismiss: false)
    end
  end
end
このページは役に立ちましたか?
0 / 5 - 0 評価