非常简单的问题,但很难找到Rails Active Record迁移的完整API文档。
任何人都知道获取列表的最佳位置(源代码除外)
e.g。找到在rails 4中使用数组的示例,但在docs中找不到
class AddEmailsToUser < ActiveRecord::Migration
def change
add_column :users, :emails, :string, array: true, default: '{}'
end
end
答案 0 :(得分:-1)
不是您正在寻找的内容,但这里是迁移中对数组的rails支持的github pull请求:
https://github.com/rails/rails/pull/7547
PostgreSQL数组类型支持。任何数据类型都可用于创建阵列列,具有完全迁移和架构转储器支持。 要声明数组列,请使用以下语法:
create_table :table_with_arrays do |t|
t.integer :int_array, :array => true
# integer[]
t.integer :int_array, :array => true, :length => 2
# smallint[]
t.string :string_array, :array => true, :length => 30
# char varying(30)[]
end
这尊重任何其他迁移细节(限制,默认值等)。 ActiveRecord将在进出数据库的路上序列化和反序列化数组列。 有一点需要注意:PostgreSQL不对元素数量施加任何限制,任何数组都可以是多维的。任何多维数组都必须是矩形的(每个子数组必须具有与其兄弟相同数量的元素)。
边缘指南:
http://edgeguides.rubyonrails.org/active_record_postgresql.html
# db/migrate/20140207133952_create_books.rb
create_table :books do |t|
t.string 'title'
t.string 'tags', array: true
t.integer 'ratings', array: true
end
add_index :books, :tags, using: 'gin'
add_index :books, :ratings, using: 'gin'
# app/models/book.rb
class Book < ActiveRecord::Base
end
# Usage
Book.create title: "Brave New World",
tags: ["fantasy", "fiction"],
ratings: [4, 5]
## Books for a single tag
Book.where("'fantasy' = ANY (tags)")
## Books for multiple tags
Book.where("tags @> ARRAY[?]::varchar[]", ["fantasy", "fiction"])
## Books with 3 or more ratings
Book.where("array_length(ratings, 1) >= 3")