Только для Rails, но я начал использовать CarrierWave для обработки загрузки.Я пытаюсь создать приложение для хостинга, в котором:
- Шоу принадлежит пользователю
- Шоу имеет много эпизодов
- Эпизод принадлежит видео
В настоящее время я использую наследование одной таблицы для хранения моего видеоконтента в таблице активов типа метаданных, все хорошо сохраняется.Проблема, к которой я пытаюсь добраться, заключается в том, что когда я сохраняю видео через CarrierWave, я хочу получить возможность показывать как слаг-шоу, так и слаг эпизода в путь сохранения.
В настоящее время у меня настроено этомои передачи и загрузки эпизодов:
def store_dir
"shows/#{model.friendly_id}/cover/"
end
А ранее, до STI, я просто сохранял имя файла в видеополе в таблице эпизодов и сохранял его через:
def store_dir
"shows/#{model.show.slug}/episodes/#{model.id} - #{model.friendly_id}"
end
Только проблематеперь я не могу получить информацию об эпизоде из моей модели видео в загрузчике CW.
Мои модели:
Show.rb
class Show < ActiveRecord::Base
#Associations
belongs_to :user
belongs_to :category
has_many :episodes
#Slugs
extend FriendlyId
friendly_id :title, use: :slugged
#Carrierwave
mount_uploader :image, ShowImageUploader
end
Episode.rb
class Episode < ActiveRecord::Base
belongs_to :show
belongs_to :image, :class_name => "Episode::Image"
belongs_to :audio, :class_name => "Episode::Audio"
belongs_to :video, :class_name => "Episode::Video"
accepts_nested_attributes_for :video, :image, :audio
before_save :add_guid, :on => :create
#Slugs
extend FriendlyId
friendly_id :title, use: :slugged
validates :title, :presence => true, :length => {:within => 5..40}
protected
def add_guid
self.guid = UUIDTools::UUID.random_create.to_s
end
end
episode / video.rb
class Episode::Video < Asset
mount_uploader :video, EpisodeVideoUploader, :mount_on => :filename
end
asset.rb
class Asset < ActiveRecord::Base
end
Так что я думаю, как я могу получить соответствующие данные после загрузки в:
"shows/#{model.show.slug}/episodes/#{model.id} - #{model.friendly_id}"
Спасибо!