Q:

carierwave get null on uploaded file path

iam using carierwave to post a multipart/form data.  
this is my script
#imagepath model 
   class Imagepath < ActiveRecord::Base
      belongs_to :imagepost
      attr_accessor :path
      mount_uploader :path, ImagepathUploader
    end

#imagepost model
class Imagepost < ActiveRecord::Base
  belongs_to :user
  has_many :imagepaths
  has_many :imagecomments
  has_many :imagelikes
  attr_accessor :imagepath_data
  # attr_accessor :path
end

    #imagepost controller post method
    # POST /imageposts
  def create
    @imagepost = Imagepost.new(imagepost_params)

    if @imagepost.save
      params[:imagepost][:imagepath_data].each do |file|
        @imagepost.imagepaths.create!(:path => file)
      end

      render json: @imagepost, status: :created, location: @imagepost
    else
      render json: @imagepost.errors, status: :unprocessable_entity
    end
  end

#imagepost_params for post_params
def imagepost_params
    params.require(:imagepost).permit(:title, :description, :user_id, :imagepath_data => [])
end

iam using curl to post the data
curl 
-F "imagepost[imagepath_data][]=c4ewt. JPG" 
-F "imagepost[imagepath_data][]=border-image.png" 
-F "imagepost[title]=asasassasa" 
-F "imagepost[description]=uhuhuhuhuhuhuh" 
-F "imagepost[user_id]=5" localhost:3000/imageposts

posting is work but after do post, i get path row off my imagepath table is null :(

A:

Probably, you've lost a @:
-F "imagepost[imagepath_data][]=@c4ewt. JPG"

Edit: also it'd be better to start with Rails console bin/rails c and inspect your DB: Imagepath.find(17).  It shows to you what was actually saved. 
I propose to use Active Record Nested Attributes and curl -v option for verbose output. 
Here is simplified example from real project:  
report.rb
class Report < ApplicationRecord
  # ...
  accepts_nested_attributes_for :report_images,
    reject_if: proc { |attributes| attributes[ 'image' ].blank? } 
end

report_image.rb
class ReportImage < ApplicationRecord
  # ...
  mount_uploader :image, ReportImageUploader
end

reports_controller.rb
class ReportsController < YourBaseController
  # ...
  def create
    # In real project service class is used
    report = Report.create!(create_params)
    # ...
  end

  private

  def create_params
    params
      .require(:report)
      .permit( 
        :my_report_attribute,
        report_images_attributes: [ :kind, :image ] )

  end
end

and then curl:
curl -XPOST -v http://lvh.me:3000/yourendpoint/reports \
  -F "report[my_report_attribute]=Hehe" \
  -F "report[report_images_attributes][0][kind]=haha" \
  -F "report[report_images_attributes][0][image]=@/Users/myuser/my0.jpg" \
  -F "report[report_images_attributes][1][kind]=hoho" \
  -F "report[report_images_attributes][1][image]=@/Users/myuser/my1.png"

