gpt4 book ai didi

ruby-on-rails - Rails Carrierwave 从一个版本中访问父模型

转载 作者:数据小太阳 更新时间:2023-10-29 08:49:09 28 4
gpt4 key购买 nike

我正在尝试在我的 carrierwave uploader 上创建一个版本,检查它的父模型是否有一些关于如何调整图像大小和裁剪图像的数据,如果没有,则执行默认调整大小以填充。我一直在尝试引用此处演示的模型:https://github.com/carrierwaveuploader/carrierwave

如果我像这样运行版本代码:

version :title do
if model.dimensions_hash["title"]
process :image_crop => [model.dimensions_hash["title"], 960, 384]
else
process :resize_to_fill => [960, 384]
end
end

我收到这个错误:

NameError: undefined local variable or method `model' for #<Class:0x007f9eae7cfed0>
from /Users/RyanKing/Sites/test/app/uploaders/page_image_uploader.rb:45:in `block in <class:PageImageUploader>'

第 45 行是 process :image_crop => [model.dimensions_hash["title"], 960, 384


如果 if 语句返回真,为什么第 45 行返回错误?我是否错误地引用了模型?

我在这里发现了类似的问题,但无法使其适应我的情况。 Passing a parameter to the uploader / accessing a model's attribute from within the uploader / letting the user pick the thumbnail size

最佳答案

嗯,你是对的 model 方法将不可用,因为 version 是一个

类方法,而模型是 uploader 的实例方法

但是有办法得到它们

如果您检查我在邮件中附加的链接, block 内定义的所有内容都是class_eval,因此考虑到这一点,您可以像这样修改代码

version :title do
process :image_crop => [960, 384],:if => :has_title?
process :resize_to_fill => [960, 384] ,:if => :has_not_title?

def has_title?
model.dimensions_hash["title"].present?
end

def has_not_title?
not(has_title?)
end
end

希望对你有帮助

关于ruby-on-rails - Rails Carrierwave 从一个版本中访问父模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875931/

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