2015-05-03 6 views
7

एक लंबे समय के जावा डेवलपर - ROR करने के लिए नए - मैं रेल 4 में एक JSON REST API का निर्माण कर रहा हूँ, और मैं मजबूत मानकों का प्रयोग करके समस्या आ जाती है। जब मैं अपने अंतिम बिंदु से एक के लिए एक HTTP पोस्ट अनुरोध करते हैं, मैं अगर कुछ अन्य विशेषताओं मौजूद हैं मेरी नियंत्रक मुख्य उद्देश्य की आवश्यकता के लिए के लिए चाहते हैं, उसके गुण से कुछ की आवश्यकता होती है, और, यह भी उन पर लौटने के लिए के लिए। उन आवश्यकताओं और परमिट विधियों को वापस लौटने के रूप में देखकर, मैं सोच रहा हूं कि एक ही ऑब्जेक्ट के कुछ विशेषताओं को अनुमति देने और आवश्यक दोनों के लिए सबसे अच्छा अभ्यास क्या है। क्या मुझे शायद दो हैंश मर्ज करना चाहिए? आपके इनपुट के लिए बहुत बहुत धन्यवाद, क्योंकि मैंने इस मुद्दे पर काफी समय बिताया है।रेल 4 आवश्यकता होती है और परमिट एकाधिक

उत्तर

14

मेरे सबसे अच्छे ज्ञान के लिए, मुझे लगता है कि जाने का तरीका यह है कि आप केवल अपने नियंत्रक में पैरामीटर की अनुमति देते हैं, और फिर आप पैरामीटर पर सीधे नियंत्रक के बजाय अपने मॉडल में विशेषता-सत्यापन निष्पादित करते हैं।

मजबूत मापदंडों सुरक्षित करने के लिए, कि कुछ बीमार इच्छित व्यक्ति अपने उपयोगकर्ता के रूप हैक नहीं है और इस तरह के "भूमिका = व्यवस्थापक" कुछ डालने केवल देखते हैं।

जहां तक ​​मुझे पता है, मजबूत पैरामीटर कार्यक्षमता वास्तव में कुछ मानकों को विशेषताओं की हैश की विशेषता वाले एकल कुंजी के अलावा मौजूद नहीं है (जैसे मॉडल-कुंजी जिसे उपयोगकर्ता या इसी तरह कहा जाता है)।

आप इस तरह अपने मॉडल में सत्यापन कर सकते हैं:

class User < ActiveRecord::Base 
    validates :email, :first_name, :last_name, presence: true 
end 

आप simple_form की तरह कुछ का उपयोग करते हैं, तो त्रुटियों भी स्वचालित रूप से दिखाया जाएगा।

एक आदमी यहाँ, जो एक से अधिक का सुझाव नहीं है वास्तविक अनुमति देने से पहले की आवश्यकता है। मेरे व्यक्तिगत राय है कि यह बहुत बदसूरत है।

Strong parameters require multiple

def user_params 
    params.require(:user).require(:first_name) 
    params.require(:user).require(:last_name) 
    params.require(:user).permit(:first_name, :last_name) 
end 
+0

हैं- धन्यवाद मैं के लिए उपयोगी था! – svarlamov

संबंधित मुद्दे