পাগল - সমিতির উপস্থিতি বৈধতা?


107

আমার কাছে একটি মডেল আছে যা অন্য একটি মডেল বিয়ের সাথে "has_many" সংযুক্তি আছে আমার একটি ব্যবসায়ের প্রয়োজন আছে যে A এ প্রবেশের জন্য কমপক্ষে বি সম্পর্কিত 1 টি রেকর্ড থাকা দরকার এটি নিশ্চিত করার জন্য আমি এমন কোনও পদ্ধতি কল করতে পারি যে, বা আমার একটি কাস্টম বৈধতা লিখতে হবে?

উত্তর:


167

আপনি http://apidock.com/rails/ActtiveModel/Validations/ClassMethods/uthorates_preferences_of ব্যবহার করতে পারেনvalidates_presence_of

class A < ActiveRecord::Base
  has_many :bs
  validates_presence_of :bs
end

বা কেবলমাত্র validates http://apidock.com/rails/ActtiveModel/Validations/ClassMethods/uthorates

class A < ActiveRecord::Base
  has_many :bs
  validates :bs, :presence => true
end

তবে এটির সাথে একটি বাগ রয়েছে যদি আপনি এটি ব্যবহার accepts_nested_attributes_forকরেন :allow_destroy => true: নেস্টেড মডেল এবং প্যারেন্ট বৈধতা । এই বিষয়ে আপনি সমাধান খুঁজে পেতে পারেন।


18

-------- 4 বার ------------

সরল validates presenceআমার জন্য কাজ করেছে

class Profile < ActiveRecord::Base
  belongs_to :user

  validates :user, presence: true
end

class User < ActiveRecord::Base
  has_one :profile
end

এই ভাবে, Profile.createএখন ব্যর্থ হবে। এ- user.create_profileকে সংরক্ষণ করার আগে আমাকে ব্যবহারকারীর ব্যবহার বা সংযুক্ত করতে হবে profile


6

আপনি validates_existence_of(যা একটি প্লাগইন) এর সাথে সমিতিগুলি বৈধতা দিতে পারেন :

এই ব্লগ এন্ট্রি থেকে স্নিপেট উদাহরণ :

class Tagging < ActiveRecord::Base
  belongs_to :tag
  belongs_to :taggable, :polymorphic => true
  validates_existence_of :tag, :taggable

  belongs_to :user
  validates_existence_of :user, :allow_nil => true
end

বিকল্পভাবে, আপনি ব্যবহার করতে পারেন validates_associatedফয়সাল যেমন উত্তরের মন্তব্যে নোট করেছেvalidates_associated তেমন, সংশ্লিষ্ট শ্রেণীর বৈধতাগুলি চালিয়ে সংশ্লিষ্ট বস্তুটি বৈধ কিনা তা পরীক্ষা করে। এটি উপস্থিতি পরীক্ষা করে না । এটি লক্ষ করাও গুরুত্বপূর্ণ যে নীল সমিতিটিকে বৈধ বলে মনে করা হয়।


4

আপনি যদি সমিতিটি উভয় উপস্থিত এবং বৈধ হওয়ার জন্য গ্যারান্টিযুক্ত তা নিশ্চিত করতে চান তবে আপনাকেও ব্যবহার করতে হবে

class Transaction < ActiveRecord::Base
  belongs_to :bank

  validates_associated :bank
  validates :bank, presence: true
end

এটি চমৎকার হবে না যদি আপনি একটি অতিরিক্ত বিকল্প পাস পারে validatesপছন্দ valid: trueপরিবর্তে ডাকতে থাকার validates_associatedআলাদাভাবে।
জোশুয়া পিন্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.