ठीक है, मुझे समस्या मिल गई है।
सबसे पहले, मुझे लगता है कि आप रेल 4 का उपयोग कर रहे हैं। आपको यह त्रुटि मिलने का कारण यह है कि attr_protected
और attr_accessible
रेल 4 से हटा दिया गया है और अपने मणि में रखा गया है। रेल अब एक नए सुरक्षा मॉडल को प्रोत्साहित कर रही है। आप इसके बारे में README
में पढ़ सकते हैं। . अगर आप पुराने व्यवहार का उपयोग जारी रखना चाहते हैं, तो आपको protected_attributes gem
शामिल करना होगा . आशा है कि यह मदद करता है।
संपादित करें:मैंने नीचे स्पष्टीकरण जोड़ा है क्योंकि यह उपयोगकर्ताओं के साथ रेल 4 में अपग्रेड करने के लिए एक आम समस्या होने की संभावना है।
अगर आप attr_accessible
. का उपयोग जारी रखना चाहते हैं , यानी रेल 3 रास्ता, बस gem protected_attributes
जोड़ें आपके जेमफाइल के लिए।
यदि आप रेल 4 तरीके से काम करना शुरू करना चाहते हैं, तो आपको अब attr_accessible
का उपयोग नहीं करना चाहिए . इसके बजाय, आपको विशेषता अनुमति तर्क को नियंत्रक में ले जाना होगा। यहां एक उदाहरण दिया गया है:
class UsersController < ApplicationController
def create
# Using params[:user] without calling user_params will throw an error because
# the parameters were not filtered. This is just some Rails magic.
@user = User.new user_params
if @user.save
# Do whatever
else
render action: :new
end
end
private
def user_params
# params.require(:user) throws an error if params[:user] is nil
if current_user.nil? # Guest
# Remove all keys from params[:user] except :name, :email, :password, and :password_confirmation
params.require(:user).permit :name, :email, :password, :password_confirmation
elsif current_user.has_role :admin
params.require(:user).permit! # Allow all user parameters
elsif current_user.has_role :user
params.require(:user).permit :name, :email, :password, :password_confirmation
end
end