ruby-on-rails - معنى - لغة روبي pdf




كيف يمكنني إنشاء عمود فريد وفهرسته في عملية ترحيل Ruby on Rails؟ (5)

القضبان توليد الهجرة add_index_to_table_name column_name: uniq

أو

rails توليد الترحيل add_column_name_to_table_name column_name: string: uniq: index

يولد

class AddIndexToModerators < ActiveRecord::Migration
  def change
    add_column :moderators, :username, :string
    add_index :moderators, :username, unique: true
  end
end

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

add_column :moderators, :username, :string unless column_exists? :moderators, :username

أرغب في إنشاء عمود unique في نص برمجي لـ Ruby on Rails. ما هي أفضل طريقة للقيام بذلك؟ أيضا هناك طريقة لفهرسة عمود في جدول؟

أرغب في فرض أعمدة unique في قاعدة بيانات بدلاً من مجرد استخدام :validate_uniqueness_of .


أستخدم Rails 5 والإجابات أعلاه تعمل بشكل رائع ؛ وهنا طريقة أخرى عملت أيضا بالنسبة لي (اسم الجدول هو :people واسم العمود هو :email_address )

class AddIndexToEmailAddress < ActiveRecord::Migration[5.0]
  def change
    change_table :people do |t|
      t.index :email_address, unique: true
    end
  end
end

الجواب القصير:

add_index :table_name, :column_name, unique: true

لفهرسة عدة أعمدة معًا ، يمكنك تمرير صفيف من أسماء الأعمدة بدلاً من اسم عمود واحد ،

add_index :table_name, [:column_name_a, :column_name_b], unique: true

للحصول على تحكم أكثر دقة ، توجد طريقة " execute " تقوم بتنفيذ SQL المستقيم.

هذا هو!

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


بما أن هذا لم يتم ذكره بعد ولكنه يجيب عن السؤال الذي كان لدي عندما عثرت على هذه الصفحة ، يمكنك أيضًا تحديد أن الفهرس يجب أن يكون فريدًا عند إضافته عبر t.references أو t.belongs_to :

create_table :accounts do |t|
  t.references :user, index: { unique: true } # or t.belongs_to

  # other columns...
end

(اعتبارًا من القضبان على الأقل 4.2.7 )


add_index :table_name, :column_name, unique: true

لفهرسة عدة أعمدة معًا ، يمكنك تمرير صفيف من أسماء الأعمدة بدلاً من اسم عمود واحد.





ruby-on-rails