# == Schema Information # # Table name: maps # # id :integer not null, primary key # deleted :boolean default(FALSE), not null # download :string(255) # name :string(255) # picture :string(255) # created_at :datetime # updated_at :datetime # category_id :integer # class Map < ActiveRecord::Base include Extra #attr_protected :id, :updated_at, :created_at, :deleted has_and_belongs_to_many :contests has_many :matches, -> (map){ unscope(:where).where("map1_id = :id OR map2_id = :id", id: map.id) } scope :basic, -> { where(deleted: false).order("name") } scope :with_name, -> (name) { where(name: name) } scope :classic, -> { where("name LIKE 'ns_%'") } scope :of_category, ->(category) { where(category_id: category.id) } validates_length_of :name, :maximum => 20 validates_length_of :download, :maximum => 100 mount_uploader :picture, MapUploader def to_s name end def destroy update_attribute :deleted, true 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 def self.params(params, cuser) params.require(:map).permit(:name, :download, :picture, :category_id) end end