-
Notifications
You must be signed in to change notification settings - Fork 2
/
32-story-status-menu.patch
35 lines (24 loc) · 1.23 KB
/
32-story-status-menu.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
story-status-menu
From: Bryan Larsen <[email protected]>
## Story status menu
We're going to do this in two stages - first a fixed menu that would require a source-code change if you ever need to alter the available statuses. We'll then remove that restriction by adding a StoryStatus model. We'll also see the migration generator in action again.
The fixed menu is brain-dead simple. Track down the declaration of the status field in `story.rb` (it's in the `fields do ... end` block), and change it to read something like:
SHOW_PATCH
Job done. If you want the gory details, `enum_string` is a *type constructor*. It creates an anonymous class that represents this enumerated type (a subclass of String). You can see this in action by trying this in the console:
>> Story.find(:first).status.class
{: .ruby}
---
app/models/story.rb | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/app/models/story.rb b/app/models/story.rb
index aaae40a..9f5c5b3 100644
--- a/app/models/story.rb
+++ b/app/models/story.rb
@@ -5,7 +5,7 @@ class Story < ActiveRecord::Base
fields do
title :string
body :text
- status :string
+ status enum_string(:new, :accepted, :discussion, :implementation)
timestamps
end