【问题标题】:Filter activeadmin with hstore使用 hstore 过滤 activeadmin
【发布时间】:2013-01-30 13:54:14
【问题描述】:

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

在模型中,我有 Room 的列便利设施。

我想做这样的事情:

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

【问题讨论】:

    标签: ruby-on-rails ruby activeadmin


    【解决方案1】:

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

    class HstoreInput < Formtastic::Inputs::StringInput
    
    end
    

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

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 2012-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多