lockaz_app/app/models/video_file.rb
Nicolas Bally f20fe482c6 initial
2020-04-06 10:38:07 +02:00

87 lines
2.0 KiB
Ruby

#require 'elasticsearch/model'
class VideoFile < ApplicationRecord
searchkick
# include Elasticsearch::Model
# include Elasticsearch::Model::Callbacks
has_many :animal_animalables, :as => :animalable
has_many :animals, :through => :animal_animalables
has_many :category_categoryables, :as => :categoryable
has_many :categories, :through => :category_categoryables
belongs_to :video_folder
belongs_to :image_file
belongs_to :investigation_cat
has_many :video_file_langs, :dependent => :destroy
accepts_nested_attributes_for :video_file_langs
scope :recents, -> {where(:public => true).order("video_files.position ASC, video_files.created_at DESC")}
scope :lang, lambda { |lang|
if lang == "fr"
where(:fr => true)
else
where(:en => true)
end
}
def generate_token()
begin
self[:token] = SecureRandom.urlsafe_base64
end while DataFile.exists?(:token => self[:token])
end
before_create { generate_token() }
mount_uploader :poster, ImageUploader
mount_uploader :mpg, VideoUploader
mount_uploader :ogg, VideoUploader
mount_uploader :webm, VideoUploader
def lang(locale)
self.video_file_langs.find_by_lang_site_id(LangSite.find_by_slug(locale).id)
end
#after_update do
# logger.debug ["Updating document... ", __elasticsearch__.delete_document, __elasticsearch__.index_document].join
# end
def search_data
{
title: video_file_langs.map(&:title),
description: video_file_langs.map(&:description),
category_names: (categories.map(&:name)),
category_ids: (categories.map(&:id)),
animals_names: (animals.map(&:name)),
animals_ids: (animals.map(&:id)),
document: "video",
created_at: created_at
}
end
def as_indexed_json(options={})
self.as_json(
include: { video_file_langs: { only: [:title, :description]}
})
end
end
#VideoFile.import(:force => true)