ساخت url_path محصولات یک کاربر در ریلز

درود دوستان عزیز
من میخوام url زیر رو ایجاد کنم ولی به مشکل برخوردم
api/v1/users/:user_id/shops/products

چه مشکلی؟

/api/v1/users/:user_id/shops/:shop_id/products
این شده خروجیه من من نمیخوام shop_id رو داشته باش

آدرست احساس میکنم یک جوریه. احساس میکنم نباید اصلا توی کنترلر یوزر باشه. در مورد ادامه اش هم شک دارم.
اگر همه ی products ها رو میخوای باید احتمالا توی کنترلر خودش باشه. اگر productsهای یک shop بخصوصی رو میخوای میتونی توی shops بذاری و همون شکلی که نمیخوای id اون shop رو بدی. یا اینکه توی همون products باشه و یک پارامتر بگیره که بر اساس id فروشگاه محصولات اون رو فقط بیاره. اگر با یوزر هم کار داری و idش رو میخوای باز میتونی از طریق سشن که لاگین کرده یا از طریق همین url (یعنی get) پاس بدی.

و سوالت هم در قالب

  • «میخوای چیکار کنی»
  • «چی میشه(مشکل چیه)»
  • «توقع داشتی چی بشه»

بگو که سریعتر بشه کمک کرد و مشکل رو فهمید.

1 Likes

یه یوزر چندین فروشگاه داره و هر فروشگاه هم چندین محصول حالا من همه محصولات یک یوزر رو بدست اوردم خواستم url با مفهومی براش تهیه کنم حالا نظر بهتری دارین خوشحال میشم بدونم

توی همون کنترلر products متد اصلی که همه رو قراره بده، یک پارامتر کاربر پاس بده بهش (اگر ندادی هم مثلا همه‌ی product ها رو بده). یا یک متد جدید براش همونجا درست کنی که آی‌دی کاربر میگیره. بعد باید ۳تا جدول رو join کنی و محصولات اون کاربر را برگردونی.
یک همچین چیزی هم میشه routeش api/v1/products?user=1
حالا اینکه از نظر امنیتی آیا اشکالی نداره بقیه محصولات کاربر ۱ رو ببینند یا نه هم باید همونجا درنظر بگیری. اگر مثلا فقط خودش باید ببینه باید با یک call back چک کنی مثلا کاربر یک همین کاربری هست که لاگین کرده یا جواب بهش نده.

1 Likes

کاری که می خوای انجام بدی با nested resource که در مستندات ریلز هست انجام می شه

2 Likes