سؤال

أريد أن أضع بعض صحة مستوى الطراز على الجدول التالي:

create_table :audios do |t|
  t.integer :library_id, :null => false
  t.string :file, :null => false, :limit => 2048
  t.string :name, :limit => 512
  t.timestamps
end

هل هذا يعني أن النموذج الخاص بي، الذي (حتى الآن) يشبه:

class Audio < ActiveRecord::Base
  belongs_to :library
end

لديها

class Audio < ActiveRecord::Base
  validates_presence_of :library
  ...

أو

class Audio < ActiveRecord::Base
  validates_presence_of :library_id
  ...

?

هل كانت مفيدة؟

المحلول

للتحقق من صحة وجود جمعية، استخدم اسمها، بدون _id إلحاق

validates_presence_of :library

سوف تحقق من صحة شيئين:

  1. library_id حاضر
  2. أ Library مع معين id موجود

استخدام validates_presence_of :library_id سوف تعطيك فقط التحقق الأول من الاثنين.

بالإضافة إلى هذا، النسخة دون _id ستقوم أيضا بالتحقق بشكل صحيح إذا كانت كلا السجلات جديدة (وبالتالي library_id لا يزال إلخيا).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top