module-and-template-store/app/models/extension.rb

50 lines
1.3 KiB
Ruby

class Extension
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Slug
include Mongoid::Elasticsearch
include CategoryFilter
field :title, type: String
field :author, type: String
field :extension, type: String
field :description, type: String
field :category_id, type: String
field :repository, type: String
field :git_url, type: String
field :key, type: String
field :version, type: String
field :price, type: Float
field :tag, type: String
slug :title, history: true
has_many :previews, class_name: 'Preview'
accepts_nested_attributes_for :previews, :allow_destroy => true
belongs_to :category
mount_uploader :extension, ProductUploader
mount_uploader :thumbnail, ImageUploader
elasticsearch!
# after_save :get_version_number
SORT_TYPE = %w{Popular New Preferred}
def get_version_number
url = "#{self.repository}/raw/master/lib/#{self.key}/version.rb"
response = Net::HTTP.get_response(URI.parse(url)).body
data = HTTParty::Parser.new(response, 'rb').parse
version = data.gsub!(/\s+/, "").tr!('"','').gsub("module#{self.key.capitalize}VERSION=",'').gsub("end",'')
self.update(version: version)
end
def self.get_categories
categories = Category.where(type: "Extension")
end
end