首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型缺少'avatar_file_name‘所需的attr_accessor

模型缺少'avatar_file_name‘所需的attr_accessor
EN

Stack Overflow用户
提问于 2016-04-09 03:38:20
回答 3查看 1.9K关注 0票数 0

在我的生产模式digitalocean的应用程序上,我配置了回形针,但我遇到了这个问题:

代码语言:javascript
复制
I, [2016-04-08T15:17:29.169827 #23709]  INFO -- : Completed 500 Internal Server Error in 16ms (ActiveRecord: 0.6ms)
F, [2016-04-08T15:17:29.171143 #23709] FATAL -- :
Paperclip::Error (CommercialActivity model missing required attr_accessor for 'avatar_file_name'):
  app/controllers/commercial_activities_controller.rb:50:in `create'

commercial_activity.rb

代码语言:javascript
复制
class CommercialActivity < ActiveRecord::Base
   ...
  has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
  validates_attachment :avatar, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }
   ...
end

Gemfile

代码语言:javascript
复制
gem "paperclip", git: "git://github.com/thoughtbot/paperclip.git"

commercial_activities_controller.rb

代码语言:javascript
复制
class CommercialActivitiesController < ApplicationController
   ...
  def create
      ...
     @commercial_activity = current_tradesman.commercial_activities.build(commercial_activity_params)
      ...
    respond_to do |format|
      if @commercial_activity.save
        format.html { redirect_to url_for(controller: :tradesmen, action: :index), notice: 'Commercial activity was successfully created.' }
        format.json { render :show, status: :created, location: @commercial_activity }
      else
        format.html { redirect_to url_for(controller: :tradesmen, action: :index), notice: 'Commercial activity was not created.' }
        format.json { render json: @commercial_activity.errors, status: :unprocessable_entity }
    end

  def commercial_activity_params
   params.require(:commercial_activity).permit(:avatar, ...)
  end
end

config\environments\production.rb

代码语言:javascript
复制
...
Paperclip.options[:command_path] = "/usr/bin/"
...

db\migrate\20160408154436_add_attachment_avatar_to_commercial_activities.rb

代码语言:javascript
复制
class AddAttachmentAvatarToCommercialActivities < ActiveRecord::Migration
  def self.up
    change_table :commercial_activities do |t|
      t.attachment :avatar
    end
  end

  def self.down
    remove_attachment :commercial_activities, :avatar
  end
end

我该如何解决这个问题?谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-04-09 03:45:10

您需要在模型中具有avatar_file_name (例如attr_accessor :avatar_file_name)的列或虚拟属性。回形针将在保存前将表单值缓存在此字段中。

票数 1
EN

Stack Overflow用户

发布于 2016-04-09 03:50:04

作为安东尼答案的后续,错误是这样读的,它看起来需要一个attr_accessor。然而,这对我来说似乎很奇怪,因为我从来不需要一个来让我的回形针图像工作。你有没有试过给模型一个attr_accessible

代码语言:javascript
复制
class CommercialActivity < ActiveRecord::Base
  ...
  attr_accessible :avatar
  ...
end
票数 0
EN

Stack Overflow用户

发布于 2016-04-09 06:04:16

那么,您确定您运行了迁移吗?当您使用回形针附件运行迁移时,您应该会得到四个东西:<attachment>_file_name<attachment>_file_size<attachment>_content_type<attachment>_updated_at。看起来你错过了所有这些...

这里有一个文档的链接:https://github.com/thoughtbot/paperclip#usage

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36507985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档