处理的rails 3.1部分attr_accessor
显然已损坏。
我有几个模型根本没有数据库,有些模型的属性没有持久化。
例子:
class User < ActiveRecord::Base
#persisted attribs
attr_accessible :name, :email, :password, :password_confirmation, :is_admin, :permissions
#non persisted attribs<br />
attr_accessor :roseburg, :kfc, :kcpl
........
如果我尝试将用户保存在控制器中创建或更新
def create<br />
@user = User.new(params[:user])
或者
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
我收到类似的错误Cannot mass assign protected attributes :roseburg, :kfc,
:kcpl
解决方法是填充属性并使用 save 方法。
def create
@user = User.new
(params[:user]).each do |attr_name, attr_value|
if @user.respond_to?("#{attr_name}")
@user.send("#{attr_name}=", attr_value)
end
end
@user.save
.....
和
def update
@user = User.find(params[:id])
respond_to do |format|
(params[:user]).each do |attr_name, attr_value|
if @user.respond_to?("#{attr_name}")
@user.send("#{attr_name}=", attr_value)
end
end
if @user.save
....
我的问题是这对安全有什么影响?