关于设置和修改详细的见这篇文章
http://huacnlee.com/blog/rails-attr-protected-or-attr-accesible-fields
这里主要是写个helper来完成这些,为啥写helper呢?来做个试验
如果我要修改字段 is_valid 和 is_admin ,那么直接修改controller实现起来大概如下
def create
@user = User.new(params[:user])
if session[:admin]
@user.is_valid = params[:user][:is_valid]
@user.is_valid = params[:user][:is_admin]
end
@user.save
......
end
def update
@user = User.find(params[:id])
if session[:admin]
@user.is_valid = params[:user][:is_valid]
@user.is_valid = params[:user][:is_admin]
end
@user.update_attributes(params[:user])
......
end
那么要改很多地方的话很不方便,所以我们写个helper来实现,写好的helper如下
def modify_model_protect_attrib(model, params, *attribs)
if session[:admin]
attribs.each do |attrib|
attrib = attrib.to_s
eval "model.#{attrib} = params[:#{attrib}]"
end
end
end
现在有了helper了,再修改controller看看,现在需要修改的就很少了,修改好的controller如下
def create
@user = User.new(params[:user])
modify_model_protect_attrib(@user, params[:user], :is_admin, :is_valid)
@user.save
......
end
def update
@user = User.find(params[:id])
modify_model_protect_attrib(@user, params[:user], :is_admin, :is_valid)
@user.update_attributes(params[:user])
......
end
那么,现在是不是很简单了呢?呵呵
http://huacnlee.com/blog/rails-attr-protected-or-attr-accesible-fields
这里主要是写个helper来完成这些,为啥写helper呢?来做个试验
如果我要修改字段 is_valid 和 is_admin ,那么直接修改controller实现起来大概如下
def create
@user = User.new(params[:user])
if session[:admin]
@user.is_valid = params[:user][:is_valid]
@user.is_valid = params[:user][:is_admin]
end
@user.save
......
end
def update
@user = User.find(params[:id])
if session[:admin]
@user.is_valid = params[:user][:is_valid]
@user.is_valid = params[:user][:is_admin]
end
@user.update_attributes(params[:user])
......
end
那么要改很多地方的话很不方便,所以我们写个helper来实现,写好的helper如下
def modify_model_protect_attrib(model, params, *attribs)
if session[:admin]
attribs.each do |attrib|
attrib = attrib.to_s
eval "model.#{attrib} = params[:#{attrib}]"
end
end
end
现在有了helper了,再修改controller看看,现在需要修改的就很少了,修改好的controller如下
def create
@user = User.new(params[:user])
modify_model_protect_attrib(@user, params[:user], :is_admin, :is_valid)
@user.save
......
end
def update
@user = User.find(params[:id])
modify_model_protect_attrib(@user, params[:user], :is_admin, :is_valid)
@user.update_attributes(params[:user])
......
end
那么,现在是不是很简单了呢?呵呵
网友评论(0):


