SO上有许多类似的问题/答案,但似乎没有一个能解决我的问题。
我的目标是使用 Paperclip 为图像生成“动态水印”(用户头像覆盖在另一个图像上)。我遇到的问题是我无法获取模型的“user_id”属性,以便能够使用动态处理器获取头像文件/url。请注意,我使用的是“watermark.rb”处理器(在互联网的其他地方可以找到)。我可以成功生成静态水印,但 attachment.instance 为零。请参见:
class NicerImage < ActiveRecord::Base
attr_accessible :content, :image, :user_id
belongs_to :user
has_attached_file :image,
:styles => lambda { |attachment| {
:large => {
:processors => [:watermark],
:geometry => "800>",
:watermark_path => User.find(attachment.instance.user_id).avatar.url(:medium),
:position => 'SouthEast'
}
}
},
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/aws.yml",
:bucket => Rails.configuration.s3[:general_bucket],
:convert_options => { :all => "-auto-orient" }
end
我得到的错误是 nil:NilClass 的未定义方法 `user_id=' (因为 attachment.instance 为 nil)
谢谢!