diff --git a/lib/s3ff/model_helper.rb b/lib/s3ff/model_helper.rb
index <HASH>..<HASH> 100644
--- a/lib/s3ff/model_helper.rb
+++ b/lib/s3ff/model_helper.rb
@@ -3,7 +3,16 @@ module S3FF
     def download_from_direct_url_with_delay(attr_name)
       if self.respond_to?(:delay)
         self.class_eval <<-EOM
-          attr_accessor :#{attr_name}_direct_url
+
+          def #{attr_name}_direct_url
+            @#{attr_name}_direct_url
+          end
+
+          def #{attr_name}_direct_url=(val)
+            self.#{attr_name}_updated_at = Time.now if val != @#{attr_name}_direct_url
+            @#{attr_name}_direct_url = val
+          end
+
           after_save :delay_s3ff_download_direct_url, if: proc { #{attr_name}_direct_url.present? }
 
           def delay_s3ff_download_direct_url
diff --git a/lib/s3ff/version.rb b/lib/s3ff/version.rb
index <HASH>..<HASH> 100644
--- a/lib/s3ff/version.rb
+++ b/lib/s3ff/version.rb
@@ -1,3 +1,3 @@
 module S3FF
-  VERSION = '0.9.7'
+  VERSION = '0.9.8'
 end
Fix setting _direct_url virtual attribute need to engage dirty tracking on ActiveRecord instance
- most legit manner is to set _updated_at