mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-11-15 09:21:25 +00:00
70 lines
1.6 KiB
Ruby
70 lines
1.6 KiB
Ruby
class Category < ActiveRecord::Base
|
|
include Extra
|
|
|
|
MAIN = 1
|
|
SPECIAL = 10
|
|
INTERVIEWS = 11
|
|
RULES = 36
|
|
|
|
DOMAIN_NEWS = 0
|
|
DOMAIN_ARTICLES = 1
|
|
DOMAIN_ISSUES = 2
|
|
DOMAIN_SITES = 3
|
|
DOMAIN_FORUMS = 4
|
|
DOMAIN_MOVIES = 5
|
|
DOMAIN_GAMES = 6
|
|
|
|
PER_PAGE = 3
|
|
|
|
attr_protected :id, :updated_at, :created_at, :sort
|
|
|
|
validates_length_of :name, :in => 1..30
|
|
validate :validate_domain
|
|
|
|
scope :ordered, :order => "sort ASC, created_at DESC"
|
|
scope :domain, lambda { |domain| {:conditions => {:domain => domain}} }
|
|
scope :nospecial, :conditions => ["name != 'Special'"]
|
|
scope :newest, :include => :articles, :order => "articles.created_at DESC"
|
|
scope :page, lambda { |page| {:limit => "#{(page-1)*PER_PAGE}, #{(page-1)*PER_PAGE+PER_PAGE}"} }
|
|
scope :of_user, lambda { |user| {:conditions => {"articles.user_id" => user.id}, :include => :articles} }
|
|
|
|
has_many :articles, :order => "created_at DESC"
|
|
has_many :issues, :order => "created_at DESC"
|
|
has_many :forums, :order => "forums.position"
|
|
has_many :movies
|
|
has_many :maps
|
|
has_many :gathers
|
|
has_many :servers
|
|
|
|
acts_as_readable
|
|
|
|
def to_s
|
|
name
|
|
end
|
|
|
|
def domains
|
|
{DOMAIN_NEWS => 'News',
|
|
DOMAIN_ARTICLES => 'Articles',
|
|
DOMAIN_ISSUES => 'Issues',
|
|
DOMAIN_SITES => "Sites",
|
|
DOMAIN_FORUMS => "Forums",
|
|
DOMAIN_MOVIES => "Movies",
|
|
DOMAIN_GAMES => "Games"}
|
|
end
|
|
|
|
def validate_domain
|
|
errors.add :domain, I18n.t(:invalid_domain) unless domains.include? domain
|
|
end
|
|
|
|
def can_create? cuser
|
|
cuser and cuser.admin?
|
|
end
|
|
|
|
def can_update? cuser
|
|
cuser and cuser.admin?
|
|
end
|
|
|
|
def can_destroy? cuser
|
|
cuser and cuser.admin?
|
|
end
|
|
end
|