gpt4 book ai didi

ruby-on-rails - 在 ActiveSupport::Concern 模块中访问模型属性

转载 作者:行者123 更新时间:2023-12-04 18:09:04 25 4
gpt4 key购买 nike

我有一些模型在其他路径上共享相同的功能。所以我决定将这些方法放在一个模块中,并在模型中设置路径。我的问题是我无法访问我的模块中的属性。

型号:

class Job < ActiveRecord::Base
include ImageModel

image_dir = "jobs"
end

模块:

module ImageModel
extend ActiveSupport::Concern

def delete_image
unless pic_link == "" || pic_link == nil
begin
if File.delete(Rails.root.join("public", "images", image_dir, pic_link))
return true
else
return false
end
rescue
return true #an error occured but when the image does not exist we still return true
end
end

return true
end

def replace_image(new_image)
File.open(Rails.root.join("public", "images", image_dir, new_image.original_filename), "wb") do |f|
if f.write new_image.read
delete_image
pic_link = new_image.original_filename
return true #everything went fine
else
return false #return false if new image could not be written
end
end
end
end

我得到的错误:

undefined local variable or method `image_dir' for #<Job:0x007f8a93b9e8d8>

在这一行:

File.open(Rails.root.join("public", "images", image_dir, new_image.original_filename), "wb") do |f|

我是否遗漏了什么或者我是否监督了一些重要的事情?

菲利克斯

最佳答案

我认为模块的设计还有改进的空间。但对于这个特定问题,这里是快速修复。

class Job < ActiveRecord::Base
include ImageModel

def image_dir
"jobs"
end
end

关于ruby-on-rails - 在 ActiveSupport::Concern 模块中访问模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18869409/

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