aboutsummaryrefslogtreecommitdiffstats
path: root/guides/source/active_record_postgresql.md
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-02-24 19:25:15 +0100
committerYves Senn <yves.senn@gmail.com>2014-05-06 13:11:12 +0200
commit8d33a606979463f30138e05ae443292dc63b4f8c (patch)
tree098f302328cf35dad807e51b020073c48b002721 /guides/source/active_record_postgresql.md
parent7ca75f3789e316b6f3dc1f8000ec4f85c8ba32ea (diff)
downloadrails-8d33a606979463f30138e05ae443292dc63b4f8c.tar.gz
rails-8d33a606979463f30138e05ae443292dc63b4f8c.tar.bz2
rails-8d33a606979463f30138e05ae443292dc63b4f8c.zip
pg guide, advanced features [ci skip]
Diffstat (limited to 'guides/source/active_record_postgresql.md')
-rw-r--r--guides/source/active_record_postgresql.md64
1 files changed, 46 insertions, 18 deletions
diff --git a/guides/source/active_record_postgresql.md b/guides/source/active_record_postgresql.md
index f452b5c338..4280df21ae 100644
--- a/guides/source/active_record_postgresql.md
+++ b/guides/source/active_record_postgresql.md
@@ -250,24 +250,6 @@ revision = Revision.first
revision.identifier # => "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
```
-#### as primary key
-
-```ruby
-# db/migrate/20131220144913_create_devices.rb
-enable_extension 'uuid-ossp' unless extension_enabled?('uuid-ossp')
-create_table :devices, id: :uuid, default: 'uuid_generate_v4()' do |t|
- t.string :kind
-end
-
-# app/models/device.rb
-class Device < ActiveRecord::Base
-end
-
-# Usage
-device = Device.create
-device.id # => "814865cd-5a1d-4771-9306-4268f188fe9e"
-```
-
### Bit String Types
* [type definition](http://www.postgresql.org/docs/9.3/static/datatype-bit.html)
@@ -305,5 +287,51 @@ The types `inet` and `cidr` are mapped to Ruby [`IPAddr`]() objects. The
All geometric types are mapped to normal text.
+
+UUID Primary Keys
+-----------------
+
+NOTE: you need to enable the `uuid-ossp` extension to generate UUIDs.
+
+```ruby
+# db/migrate/20131220144913_create_devices.rb
+enable_extension 'uuid-ossp' unless extension_enabled?('uuid-ossp')
+create_table :devices, id: :uuid, default: 'uuid_generate_v4()' do |t|
+ t.string :kind
+end
+
+# app/models/device.rb
+class Device < ActiveRecord::Base
+end
+
+# Usage
+device = Device.create
+device.id # => "814865cd-5a1d-4771-9306-4268f188fe9e"
+```
+
+Full Text Search
+----------------
+
+```ruby
+# db/migrate/20131220144913_create_documents.rb
+create_table :documents do |t|
+ t.string 'title'
+ t.string 'body'
+end
+
+execute "CREATE INDEX documents_idx ON documents USING gin(to_tsvector('english', title || ' ' || body));"
+
+# app/models/document.rb
+class Document < ActiveRecord::Base
+end
+
+# Usage
+Document.create(title: "Cats and Dogs", body: "are nice!")
+
+## all documents matching 'cat & dog'
+Document.where("to_tsvector('english', title || ' ' || body) @@ to_tsquery(?)",
+ "cat & dog")
+```
+
Views
-----