# -*- encoding : utf-8 -*- class DataFile < ApplicationRecord #searchkick belongs_to :file_folder belongs_to :militer_cat belongs_to :image_file belongs_to :square_image_file, :class_name => "ImageFile" belongs_to :data_file_category has_many :animal_animalables, :as => :animalable has_many :animals, :through => :animal_animalables has_many :category_categoryables, :as => :categoryable has_many :categories, :through => :category_categoryables has_many :download_contents mount_uploader :file, FileUploader before_save do if !self.name? self.name = File.basename(self.file.filename, File.extname(self.file.filename)).to_s if self.file? end end before_create { generate_token() } def file_type mime = `file --mime -br "#{self.file.path}"`.strip.split(';')[0] mime end def abstract_file_name self.name end def abstract_file_name_slug self.name.to_slug end def generate_token() begin self[:token] = SecureRandom.urlsafe_base64 end while DataFile.exists?(:token => self[:token]) end def search_data { title: title, description: long_desc, category_names: categories.map(&:name), category_ids: categories.map(&:id), animals_names: animals.map(&:name), animals_ids: animals.map(&:id), document: (data_file_category ? data_file_category.name.to_slug : "document"), created_at: created_at } end end