Ruby on rails 载波直达无更新_属性方法

Ruby on rails 载波直达无更新_属性方法,ruby-on-rails,amazon-s3,paperclip,carrierwave,Ruby On Rails,Amazon S3,Paperclip,Carrierwave,所以我使用的是carrier wave direct,现在我需要更新uploader对象上的“key”属性。以下是网站上的相关行: 上传到S3后,您需要在控制器操作中使用返回的键更新uploader对象,该键对应于新的用户url: @uploader.update_attribute :key, params[:key] 问题是我的@uploader对象没有update\u属性方法。事实上,当我查看@uploader对象上的所有方法时,我看到了key()和key=()之类的方法,但没有upda

所以我使用的是carrier wave direct,现在我需要更新uploader对象上的“key”属性。以下是网站上的相关行:

上传到S3后,您需要在控制器操作中使用返回的键更新uploader对象,该键对应于新的用户url:

@uploader.update_attribute :key, params[:key]
问题是我的@uploader对象没有update\u属性方法。事实上,当我查看@uploader对象上的所有方法时,我看到了key()和key=()之类的方法,但没有update_属性


知道发生了什么吗?我是否错过了使update\u attribute方法可用所需执行的一些设置步骤?

我通过在模型上调用update\u attribute而不是在上传器上调用来实现它。在下面截取的@uploader中,CarrierWave::uploader::Base和@video的子类就是模型

  def upload
    @uploader = Video.new.asset
    @uploader.success_action_redirect = videos_upload_successful_url
  end

  def upload_successful
    @video = Video.new
    @video.update_attribute :key, params[:key] # different than documentation!!
    @video.save
  end

这似乎与文档相反,文档中记录的是您尝试它的方式。

我通过调用模型上的update_属性而不是上传程序来实现它。在下面截取的@uploader中,CarrierWave::uploader::Base和@video的子类就是模型

  def upload
    @uploader = Video.new.asset
    @uploader.success_action_redirect = videos_upload_successful_url
  end

  def upload_successful
    @video = Video.new
    @video.update_attribute :key, params[:key] # different than documentation!!
    @video.save
  end

这似乎与您尝试的文档记录方式相反。

我也遇到了同样的问题,但我解决了添加新列的问题。 我想你需要添加另一个专栏,比如
avatar\u image\u url
,除了
avatar
之外,它被用作
mount\u上传器:avatar,AvatarUploader

控制器是这样的:

class ProfilesController < ApplicationController
  before_action :setup_context

  def edit
    @uploader = @profile.avatar
    @uploader.success_action_status = '201'
  end

  def update
    if @profile.update_attributes(profile_params)
      redirect_to home_path
    else
      render :edit
    end
  end

  private

  def setup_context
    @profile = current_user
  end

  def profile_params
    params.require(:user).permit(:name, :avatar_image_url)
  end

end
您可以像这样引用图像

<%= image_tag @user.avatar_image_url %>

你也可以看看这个


我也遇到了同样的问题,但我解决了这个问题,添加了新列。 我想你需要添加另一个专栏,比如
avatar\u image\u url
,除了
avatar
之外,它被用作
mount\u上传器:avatar,AvatarUploader

控制器是这样的:

class ProfilesController < ApplicationController
  before_action :setup_context

  def edit
    @uploader = @profile.avatar
    @uploader.success_action_status = '201'
  end

  def update
    if @profile.update_attributes(profile_params)
      redirect_to home_path
    else
      render :edit
    end
  end

  private

  def setup_context
    @profile = current_user
  end

  def profile_params
    params.require(:user).permit(:name, :avatar_image_url)
  end

end
您可以像这样引用图像

<%= image_tag @user.avatar_image_url %>

你也可以看看这个


您将什么分配给
@uploader
您将什么分配给
@uploader