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.
27 lines
759 B
27 lines
759 B
6 years ago
|
class ApplyShixunMirrorForm
|
||
|
include ActiveModel::Model
|
||
|
|
||
|
attr_accessor :language, :runtime, :run_method, :attachment_id
|
||
|
|
||
|
validates :language, presence: true
|
||
|
validates :runtime, presence: true
|
||
|
validates :run_method, presence: true
|
||
|
validates :attachment_id, presence: true, numericality: { only_integer: true }
|
||
|
|
||
|
validate :ensure_attachment_presence
|
||
|
def ensure_attachment_presence
|
||
|
return unless attachment_id
|
||
|
|
||
|
if attachment.blank?
|
||
|
errors.add(:attachment_id, :attachment_not_exist)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def attachment
|
||
|
@attachment ||= Attachment.find_by_id(attachment_id)
|
||
|
end
|
||
|
|
||
|
def to_json
|
||
|
{ language: language, runtime: runtime, run_method: run_method, attachment_id: attachment_id }.to_json
|
||
|
end
|
||
|
end
|