Gestion des videos et jpg dans Ruby on Rails


#1

Hello,
Actuellement jai un bdd dans lequel j’y ai intégré une table avec les champs : title(varchar), description(text), url(varchar), view(blob)
Pour ce qui est du Title et Description je n’ai pas de souci, mais pour le lien URL de ma video et le jpg de mon VIEW je ne comprends pas comment Ruby gère et stock ces données ?
Pour etre plus clair j’ai ma video de 20mo et l’aperçu JPG (qui sera afficher en tant que ‘poster’ sur mon lecteur video) que j’aimerais intégrer dans ma base de données, mais je ne comprend pas ou ils les intégrer dans Ruby on Rails.

J’ai fait un formulaire pour pouvoir mettre à jour mes videos :

<%= form_for @video do |f| %>
  <div class="form-group">
    <label>Titre</label>
    <%= f.text_field :title, class: 'form-control' %>
  </div>
  <div class="form-group">
    <label>Description</label>
    <%= f.text_area :description, class: 'form-control' %>
  </div>
  <div class="form-group">
    <label>video</label>
    <%= f.file_field :url, class: 'form-control' %>
  </div>
  <div class="form-group">
    <label>Aperçu</label>
    <%= f.file_field :view, class: 'form-control' %>
  </div>
  <div class="form-group">
    <button type="submit" name="button">Enregistrer</button>
  </div>
<% end %>

dans mon controller :

  def update
    @video = Video.find(params[:id])
    video_params = params.require(:video).permit(:title, :description, :url, :view)
    @video.update(video_params)
    redirect_to videos_path
  end

du coup si je lui rentre une video et un jpg je ne la retrouve pas dans ma base de données :p


#2

Salut @zcd,

C’est rarement une bonne pratique de stocker des fichiers dans ta base de données. Tu monopolises ton appli rails pour servir tes fichiers, ça rend compliqué la mise en cache…
La pratique courante est d’héberger tes fichiers sur des serveurs dédiés (ex: Amazon S3…) et de simplement garder un lien/identifiant dans ta base.
Je t’invite à regarder ActiveStorage ou encore la gem Carrierwave.

PS: On en parle dans notre formation Ruby on Rails si ça t’intéresse