X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/041059690882d6420fd8bd087bb28e5cb2ea9123..8938ab79975d4152a4d6d3c8ceafdbda30b6b367:/app/models/trace.rb?ds=inline diff --git a/app/models/trace.rb b/app/models/trace.rb index 17f8ebc1e..f2d81e31a 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -31,8 +31,8 @@ class Trace < ApplicationRecord self.table_name = "gpx_files" belongs_to :user, :counter_cache => true - has_many :tags, :class_name => "Tracetag", :foreign_key => "gpx_id", :dependent => :delete_all - has_many :points, :class_name => "Tracepoint", :foreign_key => "gpx_id", :dependent => :delete_all + has_many :tags, :class_name => "Tracetag", :foreign_key => "gpx_id", :dependent => :delete_all, :inverse_of => :trace + has_many :points, :class_name => "Tracepoint", :foreign_key => "gpx_id", :dependent => :delete_all, :inverse_of => :trace scope :visible, -> { where(:visible => true) } scope :visible_to, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) } @@ -43,7 +43,7 @@ class Trace < ApplicationRecord has_one_attached :image, :service => Settings.trace_image_storage has_one_attached :icon, :service => Settings.trace_icon_storage - validates :user, :presence => true, :associated => true + validates :user, :associated => true validates :name, :presence => true, :length => 1..255, :characters => true validates :description, :presence => { :on => :create }, :length => 1..255, :characters => true validates :timestamp, :presence => true @@ -300,6 +300,26 @@ class Trace < ApplicationRecord end end + def migrate_to_storage! + file.attach(:io => File.open(trace_name), + :filename => name, + :content_type => content_type(trace_name), + :identify => false) + + if inserted + image.attach(:io => File.open(large_picture_name), + :filename => "#{id}.gif", + :content_type => "image/gif") + icon.attach(:io => File.open(icon_picture_name), + :filename => "#{id}_icon.gif", + :content_type => "image/gif") + end + + save! + + remove_files + end + private def content_type(file)