"العثور على" "الأم" الكائن في علاقة الموارد المتداخلة؟
-
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