* VRFS-2988 - relax position duplication constraint

This commit is contained in:
Seth Call 2015-03-26 10:16:14 -05:00
parent f63c94d9a3
commit 4a36bc6982
5 changed files with 26 additions and 3 deletions

View File

@ -24,6 +24,7 @@ ActiveAdmin.register JamRuby::JamTrack, :as => 'JamTracks' do
column :original_artist
column :name
column :flags do |jam_track| jam_track.duplicate_positions? ? 'DUP POSITIONS' : '' end
column :status
column :master_track do |jam_track| jam_track.master_track.nil? ? 'None' : (link_to "Download", jam_track.master_track.url_by_sample_rate(44)) end
column :licensor

View File

@ -268,4 +268,5 @@ jam_track_right_admin_purchase.sql
jam_track_playable_plays.sql
shopping_cart_anonymous.sql
user_reuse_card_and_reedem.sql
jam_track_id_to_varchar.sql
jam_track_id_to_varchar.sql
drop_position_unique_jam_track.sql

View File

@ -0,0 +1 @@
DROP INDEX jam_track_tracks_position_uniqkey;

View File

@ -44,7 +44,7 @@ module JamRuby
belongs_to :genre, class_name: "JamRuby::Genre"
belongs_to :licensor , class_name: 'JamRuby::JamTrackLicensor', foreign_key: 'licensor_id'
has_many :jam_track_tracks, :class_name => "JamRuby::JamTrackTrack", order: 'position ASC'
has_many :jam_track_tracks, :class_name => "JamRuby::JamTrackTrack", order: 'position ASC, part ASC, instrument_id ASC'
has_many :jam_track_tap_ins, :class_name => "JamRuby::JamTrackTapIn", order: 'offset_time ASC'
has_many :jam_track_rights, :class_name => "JamRuby::JamTrackRight" #, inverse_of: 'jam_track', :foreign_key => "jam_track_id" # '
@ -63,6 +63,27 @@ module JamRuby
accepts_nested_attributes_for :jam_track_tracks, allow_destroy: true
accepts_nested_attributes_for :jam_track_tap_ins, allow_destroy: true
def duplicate_positions?
counter = {}
jam_track_tracks.each do |track|
count = counter[track.position]
if count.nil?
count = 0
end
puts "count #{count}"
counter[track.position] = count + 1
end
duplicate = false
counter.each do|position, count|
if count > 1
duplicate = true
break
end
end
duplicate
end
class << self
def index(options, user)
if options[:page]

View File

@ -23,7 +23,6 @@ module JamRuby
validates :part, length: {maximum: 25}
validates :track_type, inclusion: {in: TRACK_TYPE }
validates :preview_start_time, numericality: {only_integer: true}, length: {in: 1..1000}, :allow_nil => true
validates_uniqueness_of :position, scope: :jam_track_id
validates_uniqueness_of :part, scope: [:jam_track_id, :instrument_id]
# validates :jam_track, presence: true