【问题标题】:undefined method 'has_attached_file' with paperclip on Rails 5Rails 5上带有回形针的未定义方法'has_attached_file'
【发布时间】:2018-08-26 08:19:42
【问题描述】:

安装回形针后,Rails 服务器将无法启动。我在控制台中有此错误消息:

undefined method 'has_attached_file'.

在我的 Gemfile 中

gem "paperclip", :git => "http://github.com/thoughtbot/paperclip.git"

我在我的 config/environments/development.rb 中试过这个

config.gem "paperclip"

这在我的 config/application.rb 中

Paperclip::Railtie.insert

我的计算机上安装了 ImageMagik(我使用的是 Windows 10)。有什么线索吗?

安装回形针后,我在控制台中有一条消息,说回形针现在与 aws-sdk >= 2.0.0 兼容。所以我也从github设置了最新的aws-sdk-ruby...

编辑:在使用命令“which convert”获取路径后也尝试过这个

Paperclip.options[:command_path] = "/c/Program Files/ImageMagick-7.0.7-Q16/convert"

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 paperclip


    【解决方案1】:

    我要改变的第一件事是使用版本号,而不是直接从 GitHub 获取包。

    Gemfile

    改变

    gem "paperclip", :git => "http://github.com/thoughtbot/paperclip.git"
    

    收件人

    gem "paperclip", "~> 6.0"
    

    确保运行rails generate paperclip 命令(例如:rails generate paperclip photo image)将所需的attachment 字段添加到您的数据库模型架构中。

    拥有attachment 字段后,您可以使用has_attached_file 将回形针安装到该字段(例如:has_attached_file :image)。

    别忘了重启你的服务器。

    PS:没有必要使用 config.gem "paperclip"Paperclip::Railtie.insert,我无法在 GitHub Paperclip 文档中找到任何提及它们,所以我确信它们现在已经停产,因为它们在前 Rails 中使用4个应用。

    P.P.S:我强烈建议您双引导到 Unix 操作系统(无论是 Linux 发行版还是 macOS)或使用 Cloud9 等在线 IDE 而不是使用 Windows。这简直是​​个坏主意,在处理项目时,您希望将生产环境的最小细节复制到最小。

    【讨论】:

    • 按照其他地方的建议,我在完全重建我的数据库后完成了这一切。现在错误不再出现,但我的表单中没有设置附件。我正在检查并再次检查......
    【解决方案2】:

    尝试添加

    include Paperclip::Glue
    

    到你的模型。

    【讨论】:

    • 我的情况似乎没有任何区别。
    • 如果我可以问:你重建了你的数据库来解决这个问题,对吧?您是否能够转储并重新导入旧数据库?架构改变了吗?
    • 在转储和迁移 agin 后,我没有注意到架构有任何变化。我只是听从了某人关于类似主题的建议,并且出于某种原因它起作用了。
    • 这很奇怪。感谢您的回复!
    【解决方案3】:

    我现在一切就绪。显然数据库构建存在问题。其余的,一切都在 github https://github.com/thoughtbot/paperclip 上得到了很好的解释,但是 1)我正在学习一个缺少几个步骤的教程,2)windows 有一个特定的问题。

    删除所有表并从头开始重新迁移似乎已经解决了导致错误的非常基本的问题。

    Windows 用户,请注意您的file.exe 的路径设置,它与ImageMagik 无关。你可以把这个file.exe放在任何你想要的地方,在我的例子中

    Paperclip.options[:command_path] = 'C:\Sites\utils\GnuWin32\bin'
    

    还是谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多