ruby on rails - معنى - القضبان: التحقق من تفرد عمودين(معًا)




ruby on rails ما هو (2)

جميع الإجابات المذكورة أعلاه تفتقد إلى كيفية التحقق من تفرد سمات متعددة في نموذج. تعتزم الكود أدناه معرفة كيفية استخدام سمات متعددة في النطاق.

validates :country, uniqueness: { scope: [:medium, :another_medium] }

فإنه يتحقق من صحة تفرد country في جميع الصفوف مع القيم medium و another_medium .

ملاحظة: لا تنس إضافة فهرس في العمود أعلاه ، فهذا يضمن الاسترجاع السريع ويضيف التحقق من مستوى قاعدة البيانات للسجلات الفريدة.

لدي نموذج Release به أعمدة medium country (من بين أمور أخرى). يجب ألا يكون هناك releases تشترك في مجموعات متماثلة medium / country .

كيف أكتب هذا بمثابة التحقق من القضبان؟


يمكنك استخدام التحقق من uniqueness مع خيار 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




rails-activerecord