ensl.org/app/models/map.rb
2020-03-31 20:27:34 +03:00

56 lines
1.3 KiB
Ruby

# == 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