के साथ ढूंढें मैं उपयोगकर्ता एथ के लिए डेविस के साथ रेल 3 का उपयोग कर रहा हूं। मान लें कि मेरे पास एक उपयोगकर्ता मॉडल है, डेविस सक्षम है, और एक उत्पाद मॉडल है, और उपयोगकर्ता के पास कई उत्पाद हैं।रेल के दायरे को वर्तमान उपयोगकर्ता
मेरे उत्पाद नियंत्रक में मैं अपने खोज विधि को current_user द्वारा स्कॉप्ड करना चाहता हूं, यानी।
@product = current_user.products.find(params[:id])
जब तक उपयोगकर्ता एक व्यवस्थापक उपयोगकर्ता है, यानी current_user.admin?
अभी, मैं लगभग हर विधि है, जो गन्दा लगता है कि कोड चल रहा हूँ:
if current_user.admin?
@product = Product.find(params[:id])
else
@product = current_user.products.find(params[:id])
end
क्या ऐसा करने का एक और अधिक सुरुचिपूर्ण/मानक तरीका है?
Product.scoped 1 = 1 – klochner
@klochner सिवाय इसके कि जगह ले सकता है: आप अपने नियंत्रक में निम्नलिखित लिखने के
इस अनुमति देता है यह केवल तभी काम करेगा जब यह श्रृंखला में पहला कॉल है: (कार्य: 'Product.for_user (...) ', यह नहीं है:' Product.enabled.for_user (...) ') – mbillard
mbillard - सच नहीं है, कोशिश करो – klochner