Commit 07b8b9ec by Dave Gynn

save the string value of the attachment name

the name string is used multiple times in interpolation so storing it reduces object creation
parent 73865dbe
...@@ -69,6 +69,7 @@ module Paperclip ...@@ -69,6 +69,7 @@ module Paperclip
# +escape_url+ - Perform URI escaping to URLs. Defaults to true # +escape_url+ - Perform URI escaping to URLs. Defaults to true
def initialize(name, instance, options = {}) def initialize(name, instance, options = {})
@name = name.to_sym @name = name.to_sym
@name_string = name.to_s
@instance = instance @instance = instance
options = self.class.default_options.deep_merge(options) options = self.class.default_options.deep_merge(options)
...@@ -365,7 +366,7 @@ module Paperclip ...@@ -365,7 +366,7 @@ module Paperclip
# instance_write(:file_name, "me.jpg") will write "me.jpg" to the instance's # instance_write(:file_name, "me.jpg") will write "me.jpg" to the instance's
# "avatar_file_name" field (assuming the attachment is called avatar). # "avatar_file_name" field (assuming the attachment is called avatar).
def instance_write(attr, value) def instance_write(attr, value)
setter = :"#{name}_#{attr}=" setter = :"#{@name_string}_#{attr}="
if instance.respond_to?(setter) if instance.respond_to?(setter)
instance.send(setter, value) instance.send(setter, value)
end end
...@@ -374,7 +375,7 @@ module Paperclip ...@@ -374,7 +375,7 @@ module Paperclip
# Reads the attachment-specific attribute on the instance. See instance_write # Reads the attachment-specific attribute on the instance. See instance_write
# for more details. # for more details.
def instance_read(attr) def instance_read(attr)
getter = :"#{name}_#{attr}" getter = :"#{@name_string}_#{attr}"
if instance.respond_to?(getter) if instance.respond_to?(getter)
instance.send(getter) instance.send(getter)
end end
...@@ -402,8 +403,8 @@ module Paperclip ...@@ -402,8 +403,8 @@ module Paperclip
def ensure_required_accessors! #:nodoc: def ensure_required_accessors! #:nodoc:
%w(file_name).each do |field| %w(file_name).each do |field|
unless @instance.respond_to?("#{name}_#{field}") && @instance.respond_to?("#{name}_#{field}=") unless @instance.respond_to?("#{@name_string}_#{field}") && @instance.respond_to?("#{@name_string}_#{field}=")
raise Paperclip::Error.new("#{@instance.class} model missing required attr_accessor for '#{name}_#{field}'") raise Paperclip::Error.new("#{@instance.class} model missing required attr_accessor for '#{@name_string}_#{field}'")
end end
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment