আমার কাছে একটি 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
আরও কিছু উদাহরণের জন্য ডকুমেন্টেশন দেখুন ।