Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 449
- Log:
Fix divide by zero (facepalm).
- Author:
- rool
- Date:
- Tue Sep 03 03:05:44 +0100 2013
- Size:
- 1483 Bytes
1 | class Topic < ActiveRecord::Base |
2 | belongs_to :forum, :counter_cache => true |
3 | belongs_to :user |
4 | has_many :monitorships |
5 | has_many :monitors, :through => :monitorships, :conditions => ['monitorships.active = ?', true], :source => :user, :order => 'users.display_name' |
6 | |
7 | has_many :posts, :order => 'posts.created_at', :dependent => :destroy do |
8 | def last |
9 | @last_post ||= find(:first, :order => 'posts.created_at desc') |
10 | end |
11 | end |
12 | |
13 | belongs_to :replied_by_user, :foreign_key => "replied_by", :class_name => "User" |
14 | |
15 | validates_presence_of :forum, :user, :title |
16 | before_create :set_default_replied_at_and_sticky |
17 | after_save :set_post_topic_id |
18 | |
19 | attr_accessible :title |
20 | # to help with the create form |
21 | attr_accessor :body |
22 | |
23 | def voices |
24 | posts.map { |p| p.user_id }.uniq.size |
25 | end |
26 | |
27 | def hit! |
28 | self.class.increment_counter :hits, id |
29 | end |
30 | |
31 | def sticky?() sticky == 1 end |
32 | |
33 | def views() hits end |
34 | |
35 | def paged?(per_page = 25) posts_count > per_page.to_i end |
36 | |
37 | def last_page(per_page = 25) |
38 | per_page = per_page.to_f |
39 | per_page = 25.0 if (per_page < 1) |
40 | (posts_count.to_f / per_page).ceil.to_i |
41 | end |
42 | |
43 | def editable_by?(user) |
44 | user && (user.id == user_id || user.admin? || user.moderator_of?(forum_id)) |
45 | end |
46 | |
47 | protected |
48 | def set_default_replied_at_and_sticky |
49 | self.replied_at = Time.now.utc |
50 | self.sticky ||= 0 |
51 | end |
52 | |
53 | def set_post_topic_id |
54 | Post.update_all ['forum_id = ?', forum_id], ['topic_id = ?', id] |
55 | end |
56 | end |