আমার কাছে একটি Release
মডেল medium
এবং country
কলাম রয়েছে (অন্যদের মধ্যে)। releases
সেই ভাগটি অভিন্ন medium
/ country
সংমিশ্রণে হওয়া উচিত নয় ।
আমি কীভাবে এটি রেলের বৈধতা হিসাবে লিখব?
আমার কাছে একটি Release
মডেল medium
এবং country
কলাম রয়েছে (অন্যদের মধ্যে)। releases
সেই ভাগটি অভিন্ন medium
/ country
সংমিশ্রণে হওয়া উচিত নয় ।
আমি কীভাবে এটি রেলের বৈধতা হিসাবে লিখব?
উত্তর:
আপনি বিকল্পটির সাথে স্বতন্ত্রতার বৈধতা ব্যবহার করতে পারেন scope
।
এছাড়াও, লেখার আগে একই সময়ে যাচাই করার সময় নতুন রেকর্ডগুলি বৈধতাগুলি পাস করতে বাধা দিতে আপনার ডিবিতে একটি অনন্য সূচক যুক্ত করা উচিত:
class AddUniqueIndexToReleases < ActiveRecord::Migration
def change
add_index :releases, [:country, :medium], unique: true
end
end
class Release < ActiveRecord::Base
validates :country, uniqueness: { scope: :medium }
end
unique
এটি স্বীকৃত না হওয়ায় -1 সেই অংশের জন্য আমি নীচের উত্তরটি ব্যবহার করেছি।
uniqueness
, না unique
। লিঙ্কযুক্ত ডকুমেন্টেশন দেখুন। উত্তর ঠিক করা।
উপরের সমস্ত উত্তরগুলি কীভাবে কোনও মডেলটিতে একাধিক বৈশিষ্ট্যের স্বাতন্ত্র্যকে বৈধতা দেওয়া যায় তা অনুপস্থিত। নীচের কোডটি কীভাবে একটি সুযোগে একাধিক বৈশিষ্ট্য ব্যবহার করতে হবে তা জানাতে চায়।
validates :country, uniqueness: { scope: [:medium, :another_medium] }
এটা তোলে স্বতন্ত্রতা যাচাই country
মান সঙ্গে সব সারিতে medium
এবং another_medium
।
দ্রষ্টব্য: উপরের কলামে একটি সূচক যুক্ত করতে ভুলবেন না, এটি দ্রুত পুনরুদ্ধারের বীমা করে এবং অনন্য রেকর্ডের জন্য একটি ডিবি স্তরের বৈধতা যুক্ত করে।
আপডেট: টেবিল তৈরি করার সময় একটি সূচক যুক্ত করার জন্য
t.index [:medium, :another_medium], unique: true
আপনি :scope
আপনার ভ্যালিডেটরের কাছে এই জাতীয় প্যারামিটারটি পাস করতে পারেন :
validates_uniqueness_of :medium, scope: :country
আরও কিছু উদাহরণের জন্য ডকুমেন্টেশন দেখুন ।