পেপারক্লিপ :: ত্রুটিগুলি :: রেল 4 এর সাথে মিসিংয়েরওয়েরওয়ালিডেটর এরর


226

আমি যখন আমার রেল ব্লগিং অ্যাপ্লিকেশনটির সাথে পেপারক্লিপ ব্যবহার করে আপলোড করার চেষ্টা করব তখন আমি এই ত্রুটিটি পাচ্ছি। এটি "মিসিং-রাইভায়ারডভ্যালিডেটর এরির" বলার পরে কী কী উল্লেখ করা হচ্ছে তা নিশ্চিত নই, আমি ভেবেছিলাম যে পোস্ট_প্যারামগুলি আপডেট করে এবং এটি দিয়ে: চিত্রটি ঠিক থাকবে, কারণ পোস্ট_প্যারাম তৈরি এবং আপডেট উভয়ই তৈরি করা হয়েছে

Paperclip::Errors::MissingRequiredValidatorError in PostsController#create
Paperclip::Errors::MissingRequiredValidatorError

Extracted source (around line #30):

def create
  @post = Post.new(post_params)

এটি আমার পোস্ট_কন্ট্রোলআরআরবি

def update
  @post = Post.find(params[:id])

  if @post.update(post_params)
    redirect_to action: :show, id: @post.id
  else
    render 'edit'
  end
end

def new
  @post = Post.new
end

def create
  @post = Post.new(post_params)

  if @post.save
    redirect_to action: :show, id: @post.id
  else
    render 'new'
  end
end
#...

private

def post_params
  params.require(:post).permit(:title, :text, :image)
end    

এবং এটি আমার পোস্টস সহায়ক

module PostsHelper
  def post_params
    params.require(:post).permit(:title, :body, :tag_list, :image)
  end
end

আপনি আমাকে সহায়তা করতে আমি অতিরিক্ত উপাদান পরিপূরক করতে পারি কিনা দয়া করে আমাকে জানান।

উত্তর:


501

শুরু করে Paperclip version 4.0, সমস্ত সংযুক্তিগুলিকে একটি সামগ্রীর_প্রকার বৈধতা , একটি ফাইল_নাম বৈধতা অন্তর্ভুক্ত করা প্রয়োজন বা স্পষ্টভাবে বলতে হবে যে সেগুলি হয় না।

Paperclip::Errors::MissingRequiredValidatorErrorআপনি যদি এর মধ্যে কিছু না করেন তবে পেপারক্লিপ ত্রুটি উত্থাপন করে ।

আপনার ক্ষেত্রে, আপনি উল্লেখ করার পরে আপনার Postমডেলটিতে নিম্নলিখিত যে কোনও লাইন যুক্ত করতে পারেনhas_attached_file :image

বিকল্প 1: সামগ্রী প্রকারের বৈধতা দিন

validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]

-আর - অন্যভাবে

validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] }

-আর - অন্য একটি উপায়

বিষয়বস্তুর প্রকারের বৈধতা দেওয়ার জন্য রেজেক্স ব্যবহার করা ।

উদাহরণস্বরূপ: সমস্ত চিত্রের ফর্ম্যাটগুলি যাচাই করতে, রেগেক্স এক্সপ্রেশনটি যেমন দেখানো হয়েছে তেমন নির্দিষ্ট করা যেতে পারে

@ লুকাশগ্যাটনের উত্তর

বিকল্প 2: ফাইলের নাম বৈধ করুন

validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/, /gif\Z/]

বিকল্প 3: যাচাই করবেন না

যদি কোনও পাগল কারণে ( বৈধ হতে পারে তবে আমি এখনই একটির কথা ভাবতে পারি না), আপনি কোনও content_typeবৈধতা যুক্ত করতে এবং লোকেদের বিষয়বস্তুর ধরণগুলি ছড়িয়ে দেওয়ার অনুমতি দেবেন না এবং আপনার সার্ভারে আপনি যে ডেটা প্রত্যাশা করছেন না তা প্রাপ্ত করার জন্য নিম্নলিখিতটি যুক্ত করুন :

do_not_validate_attachment_file_type :image

বিঃদ্রঃ:

উপরে content_type/ matchesঅপশনগুলির মধ্যে আপনার প্রয়োজনীয়তা অনুসারে মাইম টাইমগুলি নির্দিষ্ট করুন। আপনার শুরু করার জন্য আমি কয়েকটি চিত্রের মাইমে টাইপ দিয়েছি।

রেফারেন্স:

পড়ুন সিকিউরিটি যাচাই: কাগজ আঁটার ক্লিপ যদি এখনও যাচাই করা প্রয়োজন। :)

আপনাকে এখানে স্পোফিং বৈধতার ব্যাখ্যা দিয়েও ডেকে নিতে হতে পারে https://stackoverflow.com/a/23846121


3
নতুন সহায়ক শৈলী ব্যবহার করে ভ্যালিডেটরগুলিও সংজ্ঞায়িত করা যায়, যেমন। validates_attachment :image, presence: true, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png"] }
কাঁচনস্ট্যাক

@ আরওনস্ট্যাক +1 বিকল্পটি পরামর্শ দেওয়ার জন্য ধন্যবাদ। :) আমি একটি সামান্য টুইঙ্ক পরে উত্তর যে অন্তর্ভুক্ত করা হয়েছে। presence: trueবৈধতা বাধ্যতামূলক নয় তাই আমি সেই অংশটি বাদ দিয়েছি।
কির্তি থোরাট

1
পেপার ক্লিপ পিডিএফ ফাইল আপলোডের ক্ষেত্রে "মিসিং প্রয়োজনীয় ভ্যালিডেটর ত্রুটি" ফেলে দেবে। এর জন্য কার্যক্রমটি হ'ল: প্রথমে "ঘোস্টস্ক্রিপ্ট" ইনস্টল করুন এবং তারপরে সামগ্রী-প্রকারে "অ্যাপ্লিকেশন / পিডিএফ" যুক্ত করুন।
হ্যাকারকর্মা

আমি সত্যিই সুপারিশ করব না do_not_validate_attachment_file_type । আরডোকস যেমনটি লিখেছেন: এগার হোমোভকোভের একটি প্রতিবেদনের জন্য ধন্যবাদ আমরা কন্টেন্টের ধরণের লোকদের ফাঁকি দেওয়া এবং আপনার সার্ভারে প্রত্যাশা না করা ডেটা পেতে লোকদের রোধ করার পদক্ষেপ নিয়েছি।
ব্যবহারকারী 1322092

3
বিষয়বস্তু বৈধতা না করার জন্য আমার উন্মাদ কারণ হ'ল সংযুক্তিটি ব্যবহারকারীদের দ্বারা নয় তবে একটি সিস্টেম প্রক্রিয়া দ্বারা তৈরি করা হয়েছে। পেপারক্লিপটি এস 3 স্টোরেজের সুবিধার স্তর।
s01ipsist


4

যুক্ত করতে হবে validates_attachment_content_type মডেল মধ্যে

রেল 3

class User < ActiveRecord::Base
attr_accessible :avatar
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ 
end

রেল 4

class User < ActiveRecord::Base
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end

1
এই @zire জেনে ভাল
অরবিন্দ সিং

0

আপনার পোস্টের মডেলটি দেখতে দেখতে এমনটি নিশ্চিত করুন ...

class Post < ActiveRecord::Base
    has_attached_file :photo
    validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
end

-1

আমি এই সমাধানগুলির কোনওটিই কাজ করতে পারি না। আমি পেপারক্লিপ ৩.১ চেষ্টা করেছিলাম, তবে তখন আমার অ্যাপ্লিকেশন আমাকে জানাতে পারেনি যে আমার ইমেজ ফাইলের এক্সটেনশনগুলি jpg সত্ত্বেও অনুমোদিত হয়নি approved

পরিশেষে আমি 3.5.1 সংস্করণে সাফল্য পেয়েছি।


তাই বলতে চাই যে সংস্করণটি আপগ্রেড করে কেউ এই সমস্যাটি কাটিয়ে
উঠতে পারে

প্রকার, রকম. আমি সর্বশেষতম সংস্করণ দিয়ে শুরু করেছি, যা এখনই 4.2.1 is সেখানে ভাগ্য নেই, আবার আবার ভাগ্য 3.1 দিয়ে পাওয়া যায় না (যা আমি এখানে প্রস্তাবিত বলে মনে করেছি)। অন্য কোথাও কেউ (আমি মনে করতে পারি না) 3.5.1.1 এর পরামর্শ দিয়েছে এবং এটি আমার পক্ষে কাজ করেছে।
রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.