attr_accessible在轨道4中



我正在做一个月的rails,attr_accessible函数有问题。我已经将它作为gem安装在rails 4中(gem"protected_attributes"),并将其与simple_form一起使用。

但问题是,当我用一个名字更新我的表格时,它不记得了!但它说它更新成功了??

这是我的用户.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  attr_accessible :email, :password, :password_confirmation, :remember_me, :name
end

由于使用的是Devise,因此可以删除整个attr_accessible行(以及strong_parametersgem,请参阅下面的更多信息)。Devise提供了一个控制器,可以为您处理注册。

如果你想为你的用户添加其他属性,你可以用你的自定义控制器将Devise::RegistrationsController子类化:

# app/controllers/registrations_controller
class RegistrationsController < Devise::RegistrationsController
  private
  def sign_up_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation, :current_password)
  end
end

然后你需要告诉Devise去你的自定义控制器:

# config/routes.rb
devise_for :users, :controllers => { registrations: 'registrations' }

PS。我还建议删除strong_parametersgem,并使用开箱即用的Rails4强参数。模型级别的白名单参数存在几个已知问题(例如,不同操作的参数不同)。

相关内容

  • 没有找到相关文章

最新更新