Class: Asset

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
Paperclip::Glue
Defined in:
app/models/asset.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#assetObject

Returns the value of attribute asset.



13
14
15
# File 'app/models/asset.rb', line 13

def asset
  @asset
end

#captionObject

Returns the value of attribute caption.



13
14
15
# File 'app/models/asset.rb', line 13

def caption
  @caption
end

#titleObject

Returns the value of attribute title.



13
14
15
# File 'app/models/asset.rb', line 13

def title
  @title
end

Class Method Details

.count_with_asset_types(asset_types, *args) ⇒ Object



210
211
212
# File 'app/models/asset.rb', line 210

def count_with_asset_types(asset_types, *args)
  with_asset_types(asset_types) { where(*args).count }
end

.find_all_by_asset_types(asset_types, *args) ⇒ Object

searching and pagination moved to the controller



206
207
208
# File 'app/models/asset.rb', line 206

def find_all_by_asset_types(asset_types, *args)
  with_asset_types(asset_types) { where *args }
end

.known_typesObject



200
201
202
# File 'app/models/asset.rb', line 200

def known_types
  AssetType.known_types
end

.with_asset_types(asset_types, &block) ⇒ Object



214
215
216
217
# File 'app/models/asset.rb', line 214

def with_asset_types(asset_types, &block)
  w_asset_types = AssetType.conditions_for(asset_types)
  with_scope(where(:conditions => ["#{w_asset_types} = ?", block]))
end

Instance Method Details

#aspect(style_name = 'original') ⇒ Object



131
132
133
# File 'app/models/asset.rb', line 131

def aspect(style_name='original')
  geometry(style_name).aspect
end

#asset_typeObject



74
75
76
# File 'app/models/asset.rb', line 74

def asset_type
  AssetType.for(asset)
end

#attached_to?(page) ⇒ Boolean

Returns:

  • (Boolean)


107
108
109
# File 'app/models/asset.rb', line 107

def attached_to?(page)
  pages.include?(page)
end

#basenameObject



89
90
91
# File 'app/models/asset.rb', line 89

def basename
  File.basename(asset_file_name, ".*") if asset_file_name
end

#dimensions_known?Boolean

Returns:

  • (Boolean)


169
170
171
# File 'app/models/asset.rb', line 169

def dimensions_known?
  original_width? && original_height?
end

#extension(style_name = 'original') ⇒ Object



93
94
95
96
97
98
99
100
101
# File 'app/models/asset.rb', line 93

def extension(style_name='original')
   if style_name == 'original'
     return original_extension
   elsif style = paperclip_styles[style_name.to_sym]
     return style.format
   else
     return original_extension
   end
end

#geometry(style_name = 'original') ⇒ Object

Raises:

  • (Paperclip::StyleError)


115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'app/models/asset.rb', line 115

def geometry(style_name='original')
  raise Paperclip::StyleError, "Requested style #{style_name} is not defined for this asset." unless has_style?(style_name)
  @geometry ||= {}
  begin
    @geometry[style_name] ||= if style_name.to_s == 'original'
      original_geometry
    else
      style = self.asset.styles[style_name.to_sym]
      original_geometry.transformed_by(style.geometry)    # this can return dimensions for fully specified style sizes but not for relative sizes when there are no original dimensions
    end
  rescue Paperclip::TransformationError => e
    Rails.logger.warn "geometry transformation error: #{e}"
    original_geometry                                     # returns a blank geometry if the real geometry cannot be calculated
  end
end

#has_style?(style_name = 'original') ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'app/models/asset.rb', line 85

def has_style?(style_name='original')
  style_name == 'original' || paperclip_styles.keys.include?(style_name.to_sym)
end

#height(style_name = 'original') ⇒ Object



153
154
155
# File 'app/models/asset.rb', line 153

def height(style_name='original')
  geometry(style_name).height.to_i
end

#horizontal?(style_name = 'original') ⇒ Boolean

Returns:

  • (Boolean)


165
166
167
# File 'app/models/asset.rb', line 165

def horizontal?(style_name='original')
  geometry(style_name).horizontal?
end

#orientation(style_name = 'original') ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'app/models/asset.rb', line 135

def orientation(style_name='original')
  a = aspect(style_name)
  case
  when a == nil?
    'unknown'
  when a < 1.0
    'vertical'
  when a > 1.0
    'horizontal'
  else
    'square'
  end
end

#original_extensionObject



103
104
105
# File 'app/models/asset.rb', line 103

def original_extension
  return asset_file_name.split('.').last.downcase if asset_file_name
end

#original_geometryObject



111
112
113
# File 'app/models/asset.rb', line 111

def original_geometry
  @original_geometry ||= Paperclip::Geometry.new(original_width, original_height)
end

#square?(style_name = 'original') ⇒ Boolean

Returns:

  • (Boolean)


157
158
159
# File 'app/models/asset.rb', line 157

def square?(style_name='original')
  geometry(style_name).square?
end

#thumbnail(style_name = 'original') ⇒ Object



79
80
81
82
83
# File 'app/models/asset.rb', line 79

def thumbnail(style_name='original')
  return asset.url if style_name.to_sym == :original
  return asset.url(style_name.to_sym) if has_style?(style_name)
  return asset_type.icon(style_name)
end

#vertical?(style_name = 'original') ⇒ Boolean

Returns:

  • (Boolean)


161
162
163
# File 'app/models/asset.rb', line 161

def vertical?(style_name='original')
  geometry(style_name).vertical?
end

#width(style_name = 'original') ⇒ Object



149
150
151
# File 'app/models/asset.rb', line 149

def width(style_name='original')
  geometry(style_name).width.to_i
end