34 lines
858 B
Ruby
34 lines
858 B
Ruby
class ConfigurationFile < ActiveRecord::Base
|
|
belongs_to :server
|
|
belongs_to :file_type
|
|
has_many :file_versions, -> { order('number DESC') }
|
|
|
|
def self.create_from_template!(template, server_id)
|
|
file = ConfigurationFile.new
|
|
file.server_id = server_id
|
|
file.file_path = template.file_path
|
|
file.file_type = template.file_type
|
|
file.namehash = SecureRandom.hex
|
|
transaction do
|
|
file.save!
|
|
file.file_versions.create!(content: template.content)
|
|
end
|
|
file
|
|
end
|
|
|
|
def update_by_form(content, path)
|
|
transaction do
|
|
update_attribute(:file_path, path)
|
|
file_versions.create!(content: content, number: last_version.number + 1)
|
|
end
|
|
end
|
|
|
|
def update_by_api(file)
|
|
file_versions.create!(content: file.read, number: last_version.number + 1)
|
|
end
|
|
|
|
def last_version
|
|
file_versions.first
|
|
end
|
|
end
|