gpt4 book ai didi

ruby-on-rails - 如何基于模型实例属性路径使用回形针动态生成图像叠加层/水印

转载 作者:行者123 更新时间:2023-12-05 08:00:00 27 4
gpt4 key购买 nike

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)

谢谢!

最佳答案

我通过检查 avatar_file_name.blank 是否解决了我的问题。

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_file_name.blank? ? nil : 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

关于ruby-on-rails - 如何基于模型实例属性路径使用回形针动态生成图像叠加层/水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com