app/models/asset.rb
# == Schema Information
# Schema version: 20101101011500
#
# Table name: assets
#
# id :integer(4) not null, primary key
# name :string(255)
# url :string(255)
# attachable_id :integer(4)
# attachable_type :string(255)
# created_at :datetime
# updated_at :datetime
# document_file_name :string(255)
# document_content_type :string(255)
# document_file_size :integer(4)
# document_updated_at :datetime
#
class Asset < ActiveRecord::Base
belongs_to :attachable, :polymorphic => true
belongs_to :user
scope :for_user, lambda { |u| where(user_id: u) }
has_attached_file :document
def to_s
"#{name} #{document.original_filename if document?}"
end
def self.duplicates
group('name, url,attachable_id').having('count(id)>1').where('url <> "" and url is not null')
end
def broken?
(document_file_name.present? && !File.exists?(document.path)) ||
(url.present? && !url_exists)
end
def preserve_file_after_parent_validation_failure!
if document? && changes["document_updated_at"]
save!
end
end
private
def url_exists
case url
when /^\/file/
File.exists?(File.join(Rails.root,url))
when /^\/help/
File.exists?(File.join(Rails.root,'app/views/help',"_#{url.split('/').last}.html.erb"))
else
false #go to it yourself
end
end
end