使用hstore过滤activeadmin

时间:2013-01-30 13:54:14

标签: ruby-on-rails ruby activeadmin

我想将activeadmin过滤器与hstore一起使用:

在模特中,我有房间的柱子设施。

我想这样做:

  

过滤器:设施,:as => :select,:collection => PROC   {{Room.all.map | R | r.amenities}}

2 个答案:

答案 0 :(得分:4)

您可以为HStore数据类型创建Formtastic自定义输入。如果您不希望Hstore值可编辑,这应该足够了(您还可以使用input_html_options将输入字段设置为只读):

class HstoreInput < Formtastic::Inputs::StringInput

end

这会破坏写入时的属性值。

答案 1 :(得分:2)

使用最新的activeadmin(使用ransack代替meta_search),可以为模型中的hstore字段定义自定义ransacker

class Room < ActiveRecord::Base
  store_accessor :options, :amenities

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

然后它可以在activeadmin中用于过滤:

ActiveAdmin.register Room do
  filter :amenities_eq, label: 'Amenities', as: :select # ...
end