it-swarm.dev

توليد الهجرة - إنشاء جدول الانضمام

لقد بحثت في العديد من مشاركات SO و google لإنشاء ترحيل جدول الانضمام لرابطة has many and belongs to many ولا شيء يعمل.

تقوم جميع الحلول بإنشاء ملف ترحيل فارغ.

أنا أستخدم Rails 3.2.13 ولدي جدولان: security_users و assignments. هذه بعض الأشياء التي جربتها:

Rails generate migration assignments_security_users

Rails generate migration create_assignments_security_users

Rails generate migration create_assignments_security_users_join_table

Rails g migration create_join_table :products, :categories (following the official documentation)

Rails generate migration security_users_assignments security_user:belongs_to assignments:belongs_to 

هل يمكن لأي شخص معرفة كيفية إنشاء ترحيل جدول صلة بين جدولين؟

59
gotqn

قم بتشغيل هذا الأمر لإنشاء ملف الترحيل الفارغ (لا يتم ملؤه تلقائيًا ، وتحتاج إلى نشره بنفسك):

Rails generate migration assignments_security_users

افتح ملف الترحيل الذي تم إنشاؤه وأضف هذا الرمز:

class AssignmentsSecurityUsers < ActiveRecord::Migration
  def change
    create_table :assignments_security_users, :id => false do |t|
      t.integer :assignment_id
      t.integer :security_user_id
    end
  end
end

ثم قم بتشغيل rake db:migrate من جهازك. لقد قمت بإنشاء اختبار حول العديد من العلاقات مع مثال بسيط قد يساعدك.

36
Powers

لإكمال الأمر create_join_table تلقائيًا في سطر الأوامر ، يجب أن يبدو كما يلي:

Rails g migration CreateJoinTableProductsSuppliers products suppliers

لطراز المنتج ونموذج المورد. سوف تنشئ القضبان جدولًا بعنوان "products_suppliers". لاحظ التعددية.

(لاحظ الجانب أن generation يمكن اختصار الأمر إلى g فقط)

147
andrewcockerham

عادةً ما أرغب في امتلاك ملف "الطراز" أيضًا عندما أقوم بإنشاء جدول الانضمام. لذلك أنا أفعل.

Rails g model AssignmentSecurityUser assignments_security:references user:references
17
Prakash Raman

أعتقد أن هذا سيكون إجابة محدثة لـ Rails 5

create_table :join_table_name do |t|
  t.references :table_name, foreign_key: true
  t.references :other_table_name, foreign_key: true
end
0
Cody Elhard