سؤال

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

1) في band.rb

has_and_belongs_to_many :genres

2) إنشاء الجدول الانضمام band_genres

حتى بعد قراءة الوثائق، أنا مرتبك بعض الشيء فيما يعنيه Habtm في الواقع. أعتقد أنني سأعتقد فقط "الفرقة لديها العديد من الأنواع"، وليس لديها وينتمي إلى الكثيرين. لذا فإن التفسير السريع لأسفل من ذلك سيكون رائعا.

الارتباك مع تركيبات

أيضا، عند القيام بثباتي ل Band_Genres لدي

{ 
  "The Reaper Band and Funk": { "band": "The Reaper Band", "genre": "Funk" },
  "The Reaper Band and Rock": { "band": "The Reaper Band", "genre": "Rock" }  
}

والحصول على عمود الفرقة "غير معروف". اعتقدت أن القضبان كان من المفترض أن تعرف أن "فرقة ريبر" تشير إلى فرقة من تركيبات الفرقة (نفس الاسم بالطبع) وأستحصل على هذا المعرف ويعرف أن "الفرقة" في هذه الترسبات ستشير إلى BAND_ID في جدول الانضمام وبعد أفضل أن تبدو تركيباتي مثل هذه الأرقام المشفرة الثابتة.

الارتباك مع المصانع

عندما أقوم بإنشاء شريط في المصنع، أريد تعيين أنواعها:

Factory.define :band do |f|
  f.sequence(:name) { |n| "Band#{n}" }
  f.mailing_lists { |mailing_lists| [mailing_lists.association(:mailing_list)] }
  f.genres 2
end

أدرك هنا ربما أحتاج إلى Genre_id مشفرة بجد. ولكن لماذا لا ينظر القضبان إلى ذلك ويقول "أوه، إنه يريد إضافة نوع مع ID = 2 إلى جدول Band_Genres".

أنا لا أتوقع القضبان لرعاية كل العمل القذر بالنسبة لي، لكنني أريد أن ألعب من قبل القواعد.

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

المحلول

  1. لديه وينتمي إلى الكثيرين يحدد العلاقة في كلا الاتجاهين. إذا كنت بحاجة فقط لمعرفة ما هي الأنواع التي ينتمي إليها الفرقة، فستكون has_many على ما يرام. إذا كنت ترغب في معرفة النطاقات التي "فانك"، فيمكنك استخدام Habtm للسماح بإجراء بحث عن النطاقات عن نوع معين.
  2. بالنسبة للتركيبات، في القضبان، يمكنك الآن القيام Habtm دون إنشاء تركيبات منفصلة لجدول الانضمام. علي سبيل المثال:

في bands.yml:

reaper_band:
  name: The Reaper Band
  genres: funk, rock

في genres.yml:

funk:
  name: Funk
  bands: reaper_band

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