ruby - Rails 3.2 model constructor with Rails 4 -
my model constructor:
3.2:
def initialize(attributes = {}) super # must allow active record initialize! attributes.each |name, value| send("#{name}=", value) end end
4.0.4:
activemodel::forbiddenattributeserror
how change 3.2 constructor 4.0.4 compatibility?
i guess getting error when try create new user user controller?
if have code like:
class userscontroller < applicationcontroller ... def create @user = user.new(params[:user]) ... end ... end
then won't work because can no longer mass assignments in rails 4.
instead need whitelist parameters in controller this:
class userscontroller < applicationcontroller ... def create @user = user.new(user_params) ... end ... private def user_params params.require(:user).permit(:username, :password, :password_confirmation, :email) # etc. according user model end end
having said this, i'm not sure why need constructor in model @ all? initialize method inheriting activerecord::base
should enough. in event will need whitelist parameters in controller avoid forbiddenattributeserror
error.
Comments
Post a Comment