"العثور على" "الأم" الكائن في علاقة الموارد المتداخلة؟

StackOverflow https://stackoverflow.com/questions/445606

  •  22-07-2019
  •  | 
  •  

سؤال

ويقول أن لدي اثنين من الموارد والمشاريع والمهام. وهو مشروع يمكن أن يكون لها العديد من المهام. والعمل ينتمي إلى مشروع واحد. ويقول أيضا بأنني المهام المتداخلة في إطار مشروع في routes.rb:

map.resources :projects do |project|
  project.resources :tasks
end

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

وأي أفكار؟

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

المحلول

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


class Task
  belongs_to :project
  alias :project :parent
end

وبعد ذلك استخدام هذه العلاقة لكشف ما إذا كان الكائن الأصل متاح:


if object.respond_to?(:parent)
  # do something
end

وعلاوة على ذلك، يمكنك استخدام طرق متعددة الأشكال إذا تم تعيين الطرق بشكل صحيح:


polymorphic_url([object.parent, object])

نصائح أخرى

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

وماذا كنت بحاجة للتأكد من أن يتم تعريف العلاقات بشكل صحيح في madels الخاص بك. في نموذج المشروع يجب أن يكون لديك:

has_many :tasks

في نموذج مهمتك يجب أن يكون لديك:

belongs_to :project

وبمجرد الانتهاء من إعداد ذلك، كنت على استعداد للحصول على ما تريد.

@task = Task.first

unless @task.project.blank?
  project_name = @task.project.name
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top