From 58e6069255c435330524d746804de6e428f4f98f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Mon, 20 Jul 2015 09:30:55 +0200 Subject: [PATCH] File Upload Fails with 'TypeError (can't cast ActiveModel::Name to string)' #409 --- app/controllers/dmsf_controller.rb | 8 ++++---- app/controllers/dmsf_links_controller.rb | 12 ++++++------ app/models/dmsf_file.rb | 4 ++-- app/models/dmsf_link.rb | 8 ++++---- test/unit/dmsf_folder_test.rb | 2 +- test/unit/dmsf_links_test.rb | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index b91025ff..df22c7fe 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -73,7 +73,7 @@ class DmsfController < ApplicationController end end @dir_links = [] - DmsfLink.where(:project_id => @project.id, :target_type => DmsfFolder.model_name).visible.each do |l| + DmsfLink.where(:project_id => @project.id, :target_type => DmsfFolder.model_name.name).visible.each do |l| l.target_folder.custom_field_values.each do |v| if v.custom_field_id == params[:custom_field_id].to_i if v.custom_field.compare_values?(v.value, params[:custom_value]) @@ -84,7 +84,7 @@ class DmsfController < ApplicationController end end @file_links = [] - DmsfLink.where(:project_id => @project.id, :target_type => DmsfFile.model_name).visible.each do |l| + DmsfLink.where(:project_id => @project.id, :target_type => DmsfFile.model_name.name).visible.each do |l| r = l.target_file.last_revision if l.target_file if r r.custom_field_values.each do |v| @@ -157,8 +157,8 @@ class DmsfController < ApplicationController @file_delete_allowed = User.current.allowed_to? :file_delete, @project @subfolders = DmsfFolder.deleted.where(:project_id => @project.id) @files = DmsfFile.deleted.where(:project_id => @project.id) - @dir_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => DmsfFolder.model_name) - @file_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => DmsfFile.model_name) + @dir_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => DmsfFolder.model_name.name) + @file_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => DmsfFile.model_name.name) @url_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => 'DmsfUrl') end diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index a49e34f2..1b9efbce 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -105,13 +105,13 @@ class DmsfLinksController < ApplicationController @dmsf_link.target_type = 'DmsfUrl' elsif params[:dmsf_link][:target_file_id].present? @dmsf_link.target_id = params[:dmsf_link][:target_file_id] - @dmsf_link.target_type = DmsfFile.model_name + @dmsf_link.target_type = DmsfFile.model_name.name else @dmsf_link.target_id = DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) ? params[:dmsf_link][:target_folder_id].to_i : nil - @dmsf_link.target_type = DmsfFolder.model_name + @dmsf_link.target_type = DmsfFolder.model_name.name end @dmsf_link.name = params[:dmsf_link][:name] - + if @dmsf_link.save flash[:notice] = l(:notice_successful_create) redirect_to dmsf_folder_path(:id => @project.id, :folder_id => @dmsf_link.dmsf_folder_id) @@ -119,7 +119,7 @@ class DmsfLinksController < ApplicationController @dmsf_file_id = params[:dmsf_link][:dmsf_file_id] @type = params[:dmsf_link][:type] @target_folder_id = params[:dmsf_link][:target_folder_id].to_i if DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) - @target_file_id = @dmsf_link.target_id if @dmsf_link.target_type == DmsfFile.model_name + @target_file_id = @dmsf_link.target_id if @dmsf_link.target_type == DmsfFile.model_name.name render :action => 'new' end else @@ -133,10 +133,10 @@ class DmsfLinksController < ApplicationController @dmsf_link.target_type = 'DmsfUrl' elsif params[:dmsf_link][:dmsf_file_id].present? @dmsf_link.target_id = params[:dmsf_link][:dmsf_file_id] - @dmsf_link.target_type = DmsfFile.model_name + @dmsf_link.target_type = DmsfFile.model_name.name else @dmsf_link.target_id = params[:dmsf_link][:dmsf_folder_id] - @dmsf_link.target_type = DmsfFolder.model_name + @dmsf_link.target_type = DmsfFolder.model_name.name end @dmsf_link.name = params[:dmsf_link][:name] diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 71446032..8dda5756 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -42,7 +42,7 @@ class DmsfFile < ActiveRecord::Base :dependent => :destroy has_many :locks, -> { where(entity_type: 0).order("#{DmsfLock.table_name}.updated_at DESC") }, :class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy - has_many :referenced_links, -> { where target_type: DmsfFile.model_name}, + has_many :referenced_links, -> { where target_type: DmsfFile.model_name.name}, :class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy accepts_nested_attributes_for :revisions, :locks, :referenced_links, :project else @@ -54,7 +54,7 @@ class DmsfFile < ActiveRecord::Base :conditions => {:entity_type => 0}, :dependent => :destroy has_many :referenced_links, :class_name => 'DmsfLink', :foreign_key => 'target_id', - :conditions => {:target_type => DmsfFile.model_name}, :dependent => :destroy + :conditions => {:target_type => DmsfFile.model_name.name}, :dependent => :destroy end if (Rails::VERSION::MAJOR > 3) diff --git a/app/models/dmsf_link.rb b/app/models/dmsf_link.rb index 197802fb..17265090 100644 --- a/app/models/dmsf_link.rb +++ b/app/models/dmsf_link.rb @@ -51,7 +51,7 @@ class DmsfLink < ActiveRecord::Base end def target_folder_id - if self.target_type == DmsfFolder.model_name + if self.target_type == DmsfFolder.model_name.name self.target_id else f = DmsfFile.find_by_id self.target_id @@ -64,7 +64,7 @@ class DmsfLink < ActiveRecord::Base end def target_file_id - self.target_id if self.target_type == DmsfFile.model_name + self.target_id if self.target_type == DmsfFile.model_name.name end def target_file @@ -87,7 +87,7 @@ class DmsfLink < ActiveRecord::Base links = DmsfLink.where( :project_id => project.id, :dmsf_folder_id => folder ? folder.id : nil, - :target_type => DmsfFile.model_name.to_s).visible.all + :target_type => DmsfFile.model_name.name).visible.all links.each do |link| return link if link.target_file.name == filename end @@ -95,7 +95,7 @@ class DmsfLink < ActiveRecord::Base end def path - if self.target_type == DmsfFile.model_name + if self.target_type == DmsfFile.model_name.name path = self.target_file.dmsf_path.map { |element| element.is_a?(DmsfFile) ? element.name : element.title }.join('/') if self.target_file else path = self.target_folder ? self.target_folder.dmsf_path_str : '' diff --git a/test/unit/dmsf_folder_test.rb b/test/unit/dmsf_folder_test.rb index fbc28d2d..28ca3c3d 100644 --- a/test/unit/dmsf_folder_test.rb +++ b/test/unit/dmsf_folder_test.rb @@ -50,7 +50,7 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest @folder4.delete true assert_nil DmsfFolder.find_by_id(@folder4.id) # TODO: Doesn't work in Travis - a problem with bolean visiblity - #assert_equal 0, DmsfLink.where(:target_id => @folder4.id, :target_type => DmsfFolder.model_name).count + #assert_equal 0, DmsfLink.where(:target_id => @folder4.id, :target_type => DmsfFolder.model_name.name).count end end \ No newline at end of file diff --git a/test/unit/dmsf_links_test.rb b/test/unit/dmsf_links_test.rb index 59f2fde5..6ba41a76 100644 --- a/test/unit/dmsf_links_test.rb +++ b/test/unit/dmsf_links_test.rb @@ -50,7 +50,7 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest folder_link = DmsfLink.new folder_link.target_project_id = @project1.id folder_link.target_id = @folder1.id - folder_link.target_type = DmsfFolder.model_name + folder_link.target_type = DmsfFolder.model_name.name folder_link.name = 'folder1_link2' folder_link.project_id = @project1.id folder_link.created_at = DateTime.now() @@ -61,7 +61,7 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest file_link = DmsfLink.new file_link.target_project_id = @project1.id file_link.target_id = @file1.id - file_link.target_type = DmsfFile.model_name + file_link.target_type = DmsfFile.model_name.name file_link.name = 'file1_link2' file_link.project_id = @project1.id file_link.created_at = DateTime.now()