带有 hstore 的 ActiveAdmin 自定义范围
ActiveAdmin Custom Scope with hstore
我正在尝试为 ActiveAdmin 编写自定义范围,但 运行 出现错误:
- 搜索未执行
- 我一直收到错误消息
wrong number of arguments (0 for 1)
admin/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
所以我找到了解决我问题的方法。从以下位置找到:
https://github.com/activerecord-hackery/ransack/issues/267#
这是我为解决问题所做的工作:
admin/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,所以我不得不将 build_quoted
包裹在 upload
属性 周围,因为我遇到了 unsupported: String
错误 (https://github.com/rails/arel/issues/323) .
我正在尝试为 ActiveAdmin 编写自定义范围,但 运行 出现错误:
- 搜索未执行
- 我一直收到错误消息
wrong number of arguments (0 for 1)
admin/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
所以我找到了解决我问题的方法。从以下位置找到: https://github.com/activerecord-hackery/ransack/issues/267#
这是我为解决问题所做的工作:
admin/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,所以我不得不将 build_quoted
包裹在 upload
属性 周围,因为我遇到了 unsupported: String
错误 (https://github.com/rails/arel/issues/323) .