রেলস: একটি স্ট্রিংয়ের ন্যূনতম এবং সর্বাধিক দৈর্ঘ্য যাচাই করা হচ্ছে তবে এটিকে ফাঁকা হতে দেয়


88

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

validates_length_of :foo, :maximum => 5
validates_length_of :foo, :minimum => 5

আমি আমার লক্ষ্য অর্জনের জন্য এটি কীভাবে লিখব?

উত্তর:


135

আমি মনে করি এটির মতো কিছু দরকার হতে পারে:

validates_length_of :foo, minimum: 5, maximum: 5, allow_blank: true

আরও উদাহরণ: অ্যাক্টিভেকর্ড :: বৈধকরণ :: শ্রেণিমাঠগুলি


7
নির্দিষ্ট আকারের জন্য আপনি দৈর্ঘ্য সীমাবদ্ধতাটি ব্যবহার করতে পারেন: হ'ল
গুগ্রেগ

133

আপনি এই ফর্ম্যাটটি ব্যবহার করতে পারেন:

validates :foo, length: {minimum: 5, maximum: 5}, allow_blank: true

বা যেহেতু আপনার নূন্যতম এবং সর্বাধিক অভিন্ন, নিম্নলিখিতগুলিও কাজ করবে:

validates :foo, length: {is: 5}, allow_blank: true

12

বা আরও সংক্ষিপ্ত (নতুন হ্যাশ সিনট্যাক্স সহ), বৈধতা সংক্রান্ত ডকুমেন্টেশন থেকে :

validates :foo, length: 5..5, allow_blank: true

উপরের সীমাটি সম্ভবত "ইন: 5..20" এর মতো আরও কিছু অর্থপূর্ণ উপস্থাপন করতে পারে তবে কেবল চিঠির প্রশ্নের উত্তর দেওয়া উচিত।


ভাবেন না যে inস্ট্রিংগুলির সাথে কাজ করবে, এটি কেবলমাত্র সংখ্যা বলে মনে হচ্ছে
বাস্তুতত্ত্ব

4
এটি পরিবর্তে কাজ করা উচিত validates :foo, length: 2..5, allow_blank: trueতবে দৈর্ঘ্য: {হ'ল: 5 5 the
ওপি'র


3

প্রতিটি বৈধতা_ * স্বীকার করে: যদি বা: অপশন না করে

validates_length_of :foo, :maximum => 5, :if => :validate_foo_condition

যেখানে validate_foo_condition হল এমন পদ্ধতি যা সত্য বা মিথ্যা দেয়

আপনি একটি প্রোক অবজেক্টটিও পাস করতে পারেন:

validates_length_of :foo, :maximum => 5, :unless => Proc.new {|object| object.foo.blank?}

2
validates_length_of :reason, minimum: 3, maximum: 30

আরএসপেক একই জন্য

it { should validate_length_of(:reason).is_at_least(3).is_at_most(30) }



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.