You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/models/hack.rb

40 lines
1023 B

5 years ago
class Hack < ApplicationRecord
5 years ago
# status: 0 未发布; 1已发布
# diffcult: 难度 1简单2中等 3困难
5 years ago
# 编程题
validates_length_of :name, maximum: 60
# 测试集
has_many :hack_sets, ->{order("position asc")}, :dependent => :destroy
# 代码
has_many :hack_codes, :dependent => :destroy
has_many :hack_user_lastest_codes, :dependent => :destroy
5 years ago
has_many :discusses, as: :dis, dependent: :destroy
belongs_to :user
5 years ago
scope :published, -> { where(status: 1) }
scope :opening, -> {where(open_or_not: 1)}
scope :mine, -> (author_id){ where(user_id: author_id) }
5 years ago
def language
if hack_codes.count == 1
hack_codes.first.language
else
5 years ago
hack_codes.pluck(:language).first
5 years ago
end
end
def code
if hack_codes.count == 1
tran_base64_decode64(hack_codes.first.code)
5 years ago
else
tran_base64_decode64(hack_codes.pluck(:code))
5 years ago
end
end
# 用于用户调试的第一个测试用例
def input_test_case
hack_sets.first&.input
end
5 years ago
end