سؤال

لقد ترقية فقط إلى روبي 2.0 والتي افتراضيا سيتم تحميل أكتيفريكورد 4 لتطبيق بادرينو.هذا على ما يرام ، وأود أن الاستفادة من روبي 2.0 و أر 4 التحسينات.ومع ذلك ، أواجه مشكلة في إعادة كتابة بعض العلاقات التي عملت من قبل.

على سبيل المثال ، لم يعد هذا صالحا:

  has_many :dvd_credits, :order => 'position', :include => [:dvd_actor, :dvd_role]

إنه يعطي تحذيرا مهملا ، لكن المثال الذي يظهره عديم الفائدة: has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

ونظروا حولهم وكنت قادرا على العثور على أن هذا يعمل عن طريق حذف :include المعلمة:

has_many :dvd_credits, -> { order :position }

إذا أضفته مثل ذلك:

has_many :dvd_credits, -> { order :position, include: [:dvd_actor, :dvd_role] }

أحصل على هذا الخطأ عندما أسمي تلك العلاقة:

ArgumentError: Direction should be :asc or :desc

أنا لا تزال قادمة في التعامل مع التغييرات على ع 4 ولكن نقدر حقا بعض المساعدة في هذا الشأن.

شكرا.

بس لم أجد هذا في ع 4 الصفحة:

ليس هناك حاجة لاستخدام يشمل للجمعيات الفورية - وهذا هو, إذا كان لديك أمر ينتمي إلى: العميل ، ثم العميل هو حريصة-تحميل تلقائيا عند الحاجة إليها.

الذي أعتبر أن يعني أنني يمكن تجاهل بأمان include: المعلمة?

لكن هذه العلاقة معقدة بعض الشيء ، فهي تسير على هذا النحو:

class Dvd < ActiveRecord::Base
  has_many :dvd_credits, -> { order :position }
  has_many :dvd_actors, :through => :dvd_credits
  has_many :dvd_roles, :through => :dvd_credits

class DvdCredit < ActiveRecord::Base
  belongs_to :dvd_actor, :inverse_of => :dvd_credits
  belongs_to :dvd_role, :inverse_of => :dvd_credits
  belongs_to :dvd, :inverse_of => :dvd_credits

class DvdActor < ActiveRecord::Base
  has_many :dvd_credits, :inverse_of => :dvd_actors
  has_many :dvds, :through => :dvd_credits

ولكن يبدو أن الوفاء belongs_to حالة.

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

المحلول

نعم ، يمكنك فقط تجاهل :include جزء.

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