标签: postgres-ext

将postgres_ext(或Rails 4)数组与关联组合在一起

我正在尝试使用每个项目上的类型字段来开发标签(在tags表格中)和项目(在items表格中)之间的多对多关系integer[].

我知道Rails 4(和通过postgres_ext的Rails 3)通过:array => true参数支持Postgres的数组功能,但我无法弄清楚如何将它们与Active Record关联相结合.

是否has_many有这个选项?这有宝石吗?我应该放弃并且只是建立一种has_many :through关系(虽然关系数量很多,我预计这可能是无法管理的)?

postgresql ruby-on-rails-4 rails-activerecord postgres-ext

6
推荐指数
2
解决办法
1602
查看次数

Rails 3.2模式转储使用postgres_ext gem将所有UUID列转换为text和mangles数组声明

使用Ruby 2.0.0-p195和postgres_ext gem的 Rails 3.2.13和v0.3.1 .

看起来我经常遇到使用Rails的架构转储(而不是SQL结构转储)的问题,其中架构转储器将UUID列转换为文本列,将数组转换为默认值为的文本列"{}".常规操作,如rake db:schema:dump导致破坏性差异,如下所示:

-    t.string   "dbas",         :default => [],                 :array => true
-    t.string   "industries",   :default => [],                 :array => true
+    t.text     "dbas",         :default => "{}"
+    t.text     "industries",   :default => "{}"
-    t.uuid     "uuid"
+    t.text     "uuid"
Run Code Online (Sandbox Code Playgroud)

如果我手动检查数据库的结构或只是询问Rails它认为给定属性有哪种类型的列类型,一切看起来都很好.

当然,这个问题会造成各种各样的破坏.如果没有切换到SQL结构转储,我怎样才能获得正确的架构转储?

postgresql uuid ruby-on-rails postgres-ext

5
推荐指数
1
解决办法
376
查看次数

Rails字符串数组和PostgreSQL

我有一个名为Container列的Rails模型products.它是Postgres和'postgres_ext'gem支持的字符串数组.

GEMFILE的相关部分是:

gem 'rails', '3.2.9'
gem 'pg'
gem 'postgres_ext'
gem 'activerecord-postgres-hstore', git: 'git://github.com/engageis/activerecord-postgres-hstore.git'
Run Code Online (Sandbox Code Playgroud)

迁移的相关部分是:

 t.string :products, array: true
Run Code Online (Sandbox Code Playgroud)

我正在我的Container模型中编写一个公共方法,它将产品添加到此数组中.该方法如下所示:

 attr_accessible :products

 def add_to_products(product)

  if products.blank? || products.size == 0 ## product array is either uninstantiated or blank
    products = [product.id]
  else  

    unless products.include? product.id
      products << product.id
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这些是irb/console中的结果:

pry(main)> c = Container.first
=> #<Container id: "2765cc19-98f8-4e42-a1be-538788424ec7", name:....
pry(main)> p = Product.first
=> #<Product id: "319a25ae-87fe-4769-a9de-1a8e0db9e84f", name: ....
pry(main)> c.add_to_products(product)
pry(main)> c.products …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rails-postgresql postgres-ext

2
推荐指数
1
解决办法
2679
查看次数