WARNING. Unable to assign protected attributes.

I am trying to use paperclip to upload images to amazon S3 using heroku. And so far I get: WARNING. You cannot assign protected attributes to user: picture. I went through many guides and no one 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 opinion:

<%= 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 :)

+3


source to share


1 answer


Just add :picture

to attr_accessible

.



+1


source







All Articles