2

我想在 hstore 中使用 activeadmin 过滤器:

在模型中,我有带房间的列设施。

我想做这样的事情:

filter :amenities, :as => :select, :collection => proc {Room.all.map{|r| r.amenities} }

4

2 回答 2

4

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

class HstoreInput < Formtastic::Inputs::StringInput

end

不过,这将破坏写入时的属性值。

于 2013-06-26T17:04:36.217 回答
3

使用 latest activeadmin(使用ransack而不是meta_search)可以ransacker在模型中为 hstore 字段定义自定义:

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
于 2014-01-05T12:02:27.863 回答