构建和存储复杂的SQL查询以供以后编辑

时间:2012-08-21 20:07:20

标签: ruby-on-rails ruby-on-rails-3.2 arel rails-postgresql hstore

我正在使用Rails 3.2.8构建一个“产品集”构建器,该构建器反映了Google Analytics的“自定义配置文件”构建器。例如,用户可以按如下方式定义产品集:

(Category ='Printers')和((Name包含'Wireless')或(Name包含'Wifi'))

我的产品数据存储在Postgres(9.1.4)中,使用HStore列存储动态产品属性。我已经构建了一个可以使用Arel构建查询的表单,但我仍然坚持以下要求:
1.查询必须序列化到数据库。我可以存储.to_sql字符串但是我坚持使用...
2.我必须能够重建用户的表单以供以后编辑,因为这些不是一次性搜索,而是共享查询。

如何以可以轻松重建用户定义查询的方式进行序列化?

2 个答案:

答案 0 :(得分:0)

你难道不能只是序列化rails从表单获取的参数吗?

您有一个哈希,其中包含用户输入表单中的键和值,并且可以轻松地将其反馈回您用于从所述表单查询数据库的任何逻辑,或者进一步处理它。

答案 1 :(得分:0)

  1. 您可以使用持久模型来保存用户关于搜索的选项。
  2. 当您需要运行查询时,您将获得用户保存的选项,并将它们传递给使用ransacker的自定义方法。您可以像hstore这样访问值:
  3. Arel::Node::InfixOperator.new('->>', 'hstore_column_name', Arel::Nodes::Quoted.new('key_in_hstore'))
    
相关问题