كيف يمكنني جعل الموارد الموروثة متداخلة اختياريا كمفردة?
-
13-12-2019 - |
سؤال
أنا أستخدم الموارد الموروثة لتجفيف وحدات التحكم الخاصة بي ، ولكن لا يمكنني معرفة كيفية جعل وحدة تحكم معينة تتصرف بشكل صحيح.في نموذج بلدي, User has_one Person
.أريد أن يكون متداخلا اختياريا ، وأن يتصرف كمفرد عند التداخل ، وكغير مفرد عندما لا يكون متداخلا.بمعنى آخر ، أريد أن أكون قادرا على سرد جميع الأشخاص المعروفين (/الأشخاص) ، والحصول على الشخص رقم 5 (/الشخص/5) ، والحصول على الشخص الوحيد للمستخدم 10 (/المستخدم/10/شخص).ما يلي في الطرق.الميزانية العادية:
resources :users
resource :person
end
resources :people
...يضع الطرق كما أتوقع:
user_person POST /users/:user_id/person(.:format) people#create
new_user_person GET /users/:user_id/person/new(.:format) people#new
edit_user_person GET /users/:user_id/person/edit(.:format) people#edit
GET /users/:user_id/person(.:format) people#show
PUT /users/:user_id/person(.:format) people#update
DELETE /users/:user_id/person(.:format) people#destroy
people GET /people(.:format) people#index
POST /people(.:format) people#create
new_person GET /people/new(.:format) people#new
edit_person GET /people/:id/edit(.:format) people#edit
person GET /people/:id(.:format) people#show
PUT /people/:id(.:format) people#update
DELETE /people/:id(.:format) people#destroy
...عظيم جدا.الآن ، إذا كان في بوبليكونترولر ، وأنا استخدم:
belongs_to :user, :optional => true
...ثم تعمل عناوين ورل غير المتداخلة / الأشخاص ، ولكن عناوين ورل المتداخلة /المستخدمون/:معرف المستخدم/الشخص لا: undefined method 'people'
إذا ، بدلا من ذلك ، في بوبليكونترولر ، وأنا استخدم:
belongs_to :user, :optional => true, :singleton => true
...ثم تعمل عناوين ورل المتداخلة /المستخدمون/:معرف المستخدم/الشخص ، ولكن عناوين ورل غير المتداخلة / الأشخاص لا يتم التعامل معها على أنها مفردة ، حتى عندما تكون غير متداخلة: undefined method 'person'
موجز:هل هناك طريقة لجعل الموارد الموروثة تتعامل مع مورد كمفرد عند الوصول إليه عبر مسار متداخل, ولكن كغير مفرد عند الوصول إليه عبر مسار غير متداخل?
المحلول
في حالة محاولة أي شخص القيام بشيء مشابه ، انتهى بي الأمر بالتخلي عن الموارد الموروثة.أجد أنني أكثر سعادة مع وجود "سحر" أقل في وحدات التحكم الخاصة بي.
نصائح أخرى
يبدو أنه غير مدعوم: https://github.com/josevalim/inherited_resources/issues/169