@@ -5,7 +5,8 @@ class AssetFieldType < FieldType
55 :asset_updated_at ,
66 :asset
77
8- attr_reader :dimensions
8+ attr_reader :dimensions ,
9+ :existing_data
910
1011 before_save :extract_dimensions
1112
@@ -26,15 +27,16 @@ def data=(data_hash)
2627
2728 def data
2829 {
29- 'asset' : {
30- 'file_name' : asset_file_name ,
31- 'url' : asset . url ,
32- 'dimensions' : dimensions ,
33- 'content_type' : asset_content_type ,
34- 'file_size' : asset_file_size ,
35- 'updated_at' : asset_updated_at
36- } ,
37- 'asset_field_type_id' : id
30+ 'asset' : {
31+ 'file_name' : asset_file_name ,
32+ 'url' : asset . url ,
33+ 'style_urls' : style_urls ,
34+ 'dimensions' : dimensions ,
35+ 'content_type' : asset_content_type ,
36+ 'file_size' : asset_file_size ,
37+ 'updated_at' : asset_updated_at
38+ } ,
39+ 'asset_field_type_id' : id
3840 }
3941 end
4042
@@ -60,8 +62,8 @@ def extract_dimensions
6062 unless tempfile . nil?
6163 geometry = Paperclip ::Geometry . from_file ( tempfile )
6264 @dimensions = {
63- width : geometry . width . to_i ,
64- height : geometry . height . to_i
65+ width : geometry . width . to_i ,
66+ height : geometry . height . to_i
6567 }
6668 end
6769 end
@@ -77,7 +79,7 @@ def mapping_field_name
7779 end
7880
7981 def validate_presence?
80- @ validations. key? :presence
82+ validations . key? :presence
8183 end
8284
8385 def attachment_size_validator
@@ -116,11 +118,19 @@ def validate_asset_content_type
116118 attachment_content_type_validator . validate_each ( self , :asset , asset )
117119 end
118120
121+ def style_urls
122+ if existing_data . empty?
123+ ( metadata [ :styles ] . map { |key , value | [ key , asset . url ( key ) ] } ) . to_h
124+ else
125+ existing_data [ :asset ] [ :style_urls ]
126+ end
127+ end
128+
119129 def existing_metadata
120130 metadata . except! ( :existing_data )
121131
122- unless @ existing_data. empty?
123- metadata [ :path ] . gsub ( ":id" , @ existing_data[ 'asset_field_type_id' ] ) if metadata [ :path ]
132+ unless existing_data . empty?
133+ metadata [ :path ] . gsub ( ":id" , existing_data [ 'asset_field_type_id' ] ) if metadata [ :path ]
124134 end
125135
126136 metadata
0 commit comments