首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hstore的Rails Postgresql数组

hstore的Rails Postgresql数组
EN

Stack Overflow用户
提问于 2013-04-03 17:07:41
回答 3查看 1.6K关注 0票数 1

有人知道在rails 4中是否可以有hstore的数组吗?我试着用

代码语言:javascript
复制
add_column :orders, :frozen_content, :hstore , array: true

但我有

代码语言:javascript
复制
 PG::Error: ERROR:  malformed array literal: 

当我尝试保存时

EN

回答 3

Stack Overflow用户

发布于 2013-06-27 22:31:59

原则上是可以的,但正如您所发现的,它在保存时不会被正确转义。我今天刚刚记录了一个关于这方面的问题,请参阅https://github.com/rails/rails/issues/11135 (包括一个修复补丁和一些演示代码)

票数 3
EN

Stack Overflow用户

发布于 2013-11-30 22:19:19

这是一个至少存在于Rails 4.0.1中的错误。

A pull request was proposed to fix it,但在合并之前,您可以对Rails进行补丁:

代码语言:javascript
复制
# config/initializers/extensions/postgres.rb
module ActiveRecord
  module ConnectionAdapters
    class PostgreSQLColumn < Column
      module Cast
        private

          def quote_and_escape(value)
            case value
            when "NULL"
              value
            else
              "\"#{value.gsub(/(["\\])/, '\\\\\1')}\""
            end
          end
      end
    end
  end
end

顺便说一下,我在Rails控制台中测试时遇到了问题,因为初始化程序没有加载到那里。您可以使用以下命令执行此操作:

代码语言:javascript
复制
load "#{Rails.root}/config/initializers/extensions/postgres.rb"
票数 2
EN

Stack Overflow用户

发布于 2013-04-18 04:11:09

您可以起诉activerecord-postgres-hstore gem:

https://github.com/engageis/activerecord-postgres-hstore

从文档中:

  1. 创建hstore支持的字段:

类Person < ActiveRecord::Base serialize :data,ActiveRecord::Coders::Hstore end

  • 向其添加字段:

person.save

  • Query = Person.new Person.data‘’foo‘= 'bar’Person.new it:

Perosn.where("data -> 'foo‘= 'bar'")

Railscast #345 (在付费墙后面)更详细地介绍了使用hstore,使用activerecord-postgres-hstore gem:

http://railscasts.com/episodes/345-hstore

注意:我还没有在Rails4上尝试过...YMMV.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15783110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档