diff options
| author | hukl <hukl@eight.local> | 2009-02-01 17:10:20 +0100 |
|---|---|---|
| committer | hukl <hukl@eight.local> | 2009-02-01 17:10:20 +0100 |
| commit | a660a7ee62e44314c12440d376166ccb0cf60d80 (patch) | |
| tree | 2f5bd0f4cfc6cebb2dc56b3b44ec2f51269716d3 /app/models/node.rb | |
| parent | 07295b68c0ab6e340cccb1e124415572285f5e8f (diff) | |
added test for retrieving a specific revision via
a given node. turned out it wasn't working the way
I thought so I rewrote it to use only Fixnums
Diffstat (limited to 'app/models/node.rb')
| -rw-r--r-- | app/models/node.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/app/models/node.rb b/app/models/node.rb index 5acf563..3564ce4 100644 --- a/app/models/node.rb +++ b/app/models/node.rb | |||
| @@ -5,16 +5,24 @@ class Node < ActiveRecord::Base | |||
| 5 | 5 | ||
| 6 | # Class methods | 6 | # Class methods |
| 7 | 7 | ||
| 8 | def self.find_page path, revision = :current | 8 | |
| 9 | # Returns a page for a given node. If no revision is supplied, it returns | ||
| 10 | # the last / current one. If a specific revision number is supplied, the | ||
| 11 | # corresponding revision of that page is returned. Get the current / latest | ||
| 12 | # revision with -1. It raises an Argument error if the revision is not a | ||
| 13 | # Fixnum | ||
| 14 | def self.find_page path, revision = -1 | ||
| 15 | unless revision.class == Fixnum | ||
| 16 | raise ArgumentError, "revision must be a Fixnum" | ||
| 17 | end | ||
| 9 | 18 | ||
| 10 | node = Node.find_by_unique_name(path) | 19 | node = Node.find_by_unique_name(path) |
| 11 | 20 | ||
| 12 | if node | 21 | if node |
| 13 | |||
| 14 | case revision | 22 | case revision |
| 15 | when :current | 23 | when -1 |
| 16 | return node.pages.last | 24 | return node.pages.last |
| 17 | when /\d+/ | 25 | else |
| 18 | return node.pages.find_by_revision revision | 26 | return node.pages.find_by_revision revision |
| 19 | end | 27 | end |
| 20 | end | 28 | end |
