簡體   English   中英

具有hstore的ActiveAdmin自定義范圍

[英]ActiveAdmin Custom Scope with hstore

我正在嘗試為ActiveAdmin編寫自定義范圍,但始終遇到錯誤:

  1. 搜索效果不佳
  2. 我不斷收到wrong number of arguments (0 for 1)

管理員/user.rb

filter :user_upload, label: 'User Upload Ability', as: :select, collection: [['On', 'false'], ['Off', 'true']]

user.rb

scope :user_upload, ->(value) { where('properties @> hstore(?, ?)', 'upload', value) }

def self.ransackable_scopes(auth_object = nil)
  :user_upload
end

示例用戶

#<User id: 1, name: "Example", created_at: "2015-03-14 07:00:00", updated_at: "2016-04-13 20:27:50", properties: {"upload"=>"false"}>

不知道我是否要使用正確的方法。 關於如何執行范圍,以便可以根據users的上傳屬性過濾users的任何想法?

因此,我能夠為我的問題找到解決方案。 從以下位置找到這個: https : //github.com/activerecord-hackery/ransack/issues/267#

這是我為修復所做的事情:

管理員/user.rb

filter :upload_eq, label: 'User Upload Ability', as: :select, collection: { 'On' => 'false', 'Off' => 'true' }

user.rb

ransacker :upload do |parent|
      Arel::Nodes::InfixOperation.new('->', parent.table[:properties], Arel::Nodes.build_quoted('upload'))
end

事實證明,我不需要使用ransackable_scopes方法即可實現這一目標。 而且由於我使用的是Rails 4.2,我不得不在upload屬性周圍包裹build_quoted ,因為我得到了unsupported: String錯誤( https://github.com/rails/arel/issues/323 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM