简体   繁体   中英

WARNING: Can't mass-assign protected attributes Paperclip Rails 4

I am trying to use paperclip to upload images to amazon S3 using heroku. And so far I am getting : WARNING: Can't mass-assign protected attributes for User: picture. I have been through many guides and none helped.

My model:

class User < ActiveRecord::Base
  resourcify
 attr_accessible :login, :password, :password_confirmation, :longitue, :latitude, :showingName,:email,:contato,:telefone
 has_many :api_keys
 has_secure_password

  has_attached_file :picture, 
                                styles: {
                                  thumb: '100x100>',
                                  square: '200x200>',
                                  medium: '300x300>',
                                  icon: '30x30>'}#,


  validates_attachment_content_type :picture, :content_type => /\Aimage\/.*\Z/
  validates_attachment_file_name :picture, :matches => [/png\Z/, /jpe?g\Z/]
  validates_with AttachmentSizeValidator, :attributes => :picture, :less_than => 3.megabytes

  rolify :before_add => :before_add_method

  def before_add_method(role)
        # do something before it gets added
 end

My controller:

class UsersController < ApplicationController
load_and_authorize_resource

  def new
  end

  def index
  end

  def create
    @user = User.new(user_params)
    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'Comida was successfully created.' }
        format.json { render :show, status: :created, location: @user }
      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end

  end

private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      params.require(:user).permit(:picture,:login, :password, :longitue, :latitude, :showingName,:email,:contato,:telefone)
    end


end

My view:

<%= simple_form_for @user, :html => { :class => 'form-horizontal', :multipart => true } do |f| %>


  <%= f.input :nome %>


<%= f.label :picture %>
  <%= f.file_field :picture %>

  <%= f.input :showingName %>
  <%= f.input :email %>
  <%= f.input :login %>

  <%= f.input :password %>
  <%= f.input :password_confirmation %>
  <%= f.input :contato %>
  <%= f.input :telefone %>
  <%= f.input :description %>
  <%= f.input :laitude %>
  <%= f.input :logitude %>
  <div class="form-actions">
    <%= f.button :submit, :class => 'btn-primary' %>
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                users_path, :class => 'btn btn-meubar' %>
  </div>
<% end %>

production.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_host_name => 's3-sa-east-1.amazonaws.com',
  :s3_credentials => {
    :access_key_id =>   ENV['AWS_ACCESS_KEY_ID'],
     :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
     :bucket => ENV['S3_BUCKET_NAME']      
   },
   :path => ":class/:id/:basename_:style.:extension",
    :url => ":s3_path_url"
}

Thanks for the time and help :)

只需添加:pictureattr_accessible

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM