public
Description: Canberra Ruby Crew Site #crc
Homepage: http://canberraruby.com
Clone URL: git://github.com/artpop/crc_site.git
added named scopes to meetings and organised meetings index into next, upcoming 
and past meetings
schlick (author)
Mon Oct 20 05:13:32 -0700 2008
commit  ced7b81593e249d7e62783d209486804c3556100
tree    edf75bf4e0cf535ce2c4030b03735bd873f3d980
parent  885adee13e8c066e5014c0b4be05d41248fd660e
...
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
...
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
 
 
 
 
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
 
 
 
 
71
72
73
74
75
76
77
78
79
80
81
82
83
 
84
85
...
1
2
3
 
4
 
 
 
 
 
 
5
6
7
8
9
10
11
 
12
13
 
 
 
 
 
14
15
16
 
17
18
 
 
 
 
 
19
20
21
...
24
25
26
 
27
28
 
 
 
 
 
 
 
 
 
 
29
30
31
32
33
34
35
36
37
 
38
39
 
 
 
 
 
 
 
 
 
 
40
41
42
43
44
45
46
47
48
 
49
50
51
 
 
 
 
 
52
53
54
0
@@ -1,35 +1,21 @@
0
 class MeetingsController < ApplicationController
0
+
0
   # GET /meetings
0
-  # GET /meetings.xml
0
   def index
0
-    @meetings = Meeting.find(:all)
0
-
0
-    respond_to do |format|
0
-      format.html # index.html.erb
0
-      format.xml  { render :xml => @meetings }
0
-    end
0
+    upcoming_meetings = Meeting.future
0
+    @next_meeting = upcoming_meetings.shift   # removes the next meeting from upcoming_meetings
0
+    @future_meetings = upcoming_meetings
0
+    @past_meetings = Meeting.past
0
   end
0
 
0
   # GET /meetings/1
0
-  # GET /meetings/1.xml
0
   def show
0
     @meeting = Meeting.find(params[:id])
0
-
0
-    respond_to do |format|
0
-      format.html # show.html.erb
0
-      format.xml  { render :xml => @meeting }
0
-    end
0
   end
0
 
0
   # GET /meetings/new
0
-  # GET /meetings/new.xml
0
   def new
0
     @meeting = Meeting.new
0
-
0
-    respond_to do |format|
0
-      format.html # new.html.erb
0
-      format.xml  { render :xml => @meeting }
0
-    end
0
   end
0
 
0
   # GET /meetings/1/edit
0
@@ -38,48 +24,31 @@ class MeetingsController < ApplicationController
0
   end
0
 
0
   # POST /meetings
0
-  # POST /meetings.xml
0
   def create
0
     @meeting = Meeting.new(params[:meeting])
0
-
0
-    respond_to do |format|
0
-      if @meeting.save
0
-        flash[:notice] = 'Meeting was successfully created.'
0
-        format.html { redirect_to(@meeting) }
0
-        format.xml  { render :xml => @meeting, :status => :created, :location => @meeting }
0
-      else
0
-        format.html { render :action => "new" }
0
-        format.xml  { render :xml => @meeting.errors, :status => :unprocessable_entity }
0
-      end
0
+    if @meeting.save
0
+      flash[:notice] = 'Meeting was successfully created.'
0
+      redirect_to(@meeting)
0
+    else
0
+      render :action => "new"
0
     end
0
   end
0
 
0
   # PUT /meetings/1
0
-  # PUT /meetings/1.xml
0
   def update
0
     @meeting = Meeting.find(params[:id])
0
-
0
-    respond_to do |format|
0
-      if @meeting.update_attributes(params[:meeting])
0
-        flash[:notice] = 'Meeting was successfully updated.'
0
-        format.html { redirect_to(@meeting) }
0
-        format.xml  { head :ok }
0
-      else
0
-        format.html { render :action => "edit" }
0
-        format.xml  { render :xml => @meeting.errors, :status => :unprocessable_entity }
0
-      end
0
+    if @meeting.update_attributes(params[:meeting])
0
+      flash[:notice] = 'Meeting was successfully updated.'
0
+      redirect_to(@meeting)
0
+    else
0
+      render :action => "edit"
0
     end
0
   end
0
 
0
   # DELETE /meetings/1
0
-  # DELETE /meetings/1.xml
0
   def destroy
0
     @meeting = Meeting.find(params[:id])
0
     @meeting.destroy
0
-
0
-    respond_to do |format|
0
-      format.html { redirect_to(meetings_url) }
0
-      format.xml  { head :ok }
0
-    end
0
+    redirect_to(meetings_url)
0
   end
0
 end
...
1
 
2
3
4
...
 
1
2
3
4
0
@@ -1,4 +1,4 @@
0
-class Participation < ActiveRecord::Base
0
+class Attendance < ActiveRecord::Base
0
   belongs_to :meeting
0
   belongs_to :person
0
 end
...
1
2
 
 
 
 
 
 
 
 
3
4
5
...
1
2
3
4
5
6
7
8
9
10
11
12
13
0
@@ -1,5 +1,13 @@
0
 class Meeting < ActiveRecord::Base
0
   
0
+  # returns an array of all upcoming meetings from, and including, today in chronological order
0
+  # future.first returns the next meeting
0
+  named_scope :future, :conditions => ['date >= ?', Date.today], :order => 'date'
0
+
0
+  # returns an array of all the meetings held before today in order from latest to oldest (reverse chronological order)
0
+  # past.first returns the last held meeting prior to today
0
+  named_scope :past, :conditions => ['date < ?', Date.today], :order => 'date DESC'
0
+  
0
   has_many    :attendances,  :dependent => :destroy
0
   has_many    :attendees,    :through => :attendances, :source => :person
0
 
...
1
 
 
 
 
 
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
...
 
1
2
3
4
5
6
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
0
@@ -1,18 +1,22 @@
0
-%h1 Listing meetings
0
+#next_meeting
0
+  %h1 Next Meeting
0
+  - unless @next_meeting.nil?
0
+    = render :partial => "table", :locals => { :meetings => @next_meeting.to_a }
0
+  - else
0
+    No meeting has been scheduled yet
0
 
0
-%table
0
-  %tr
0
-    %th Date
0
-    %th Venue
0
-
0
-- for meeting in @meetings
0
-  %tr
0
-    %td=h meeting.date
0
-    %td=h meeting.venue
0
-    %td= link_to 'Show', meeting
0
-    %td= link_to 'Edit', edit_meeting_path(meeting)
0
-    %td= link_to 'Destroy', meeting, :confirm => 'Are you sure?', :method => :delete
0
-
0
-%br
0
-
0
-= link_to 'New meeting', new_meeting_path
0
+#future_meetings
0
+  %h3 Upcoming Meetings
0
+  - unless @future_meetings.empty?
0
+    = render :partial => "table", :locals => { :meetings => @future_meetings }
0
+  - else
0
+    No meetings have been scheduled yet
0
+    
0
+#past_meetings
0
+  %h3 Previous Meetings
0
+  - unless @past_meetings.empty?
0
+    = render :partial => "table", :locals => { :meetings => @past_meetings }
0
+  - else
0
+    There have not been any meetings yet
0
+    
0
+%p= link_to 'New meeting', new_meeting_path

Comments