考虑到这些参数:
ex:1
{:field => 'admin', :id => "1"}
ex:2
{:field => 'client', :id => "1"}
ex:3
{:field => 'partner', :id => "1"}
是否可以(以及当然如何)将其动态应用于User
模型,例如:
控制器
#note the field attribute is not a field
#the field attribute I'm trying to set above to what are given in the params hash
def update_user
field = params[:field]
@user = User.find(params[:id])
@user.field = !@user.field
@user.save(false)
render :nothing => true
end
FYI
为什么不直接使用params发送并使用update_attributes(params[:user])
更新?因为用户属性受到保护,所以更容易以这种方式更新布尔值。
答案 0 :(得分:1)
我会做这样的事情:
@user = User.where("#{params[:field]} = ?", params[:id]).first if ["admin", "client", "partner"].include?(params[:field])
(“include?”是一项安全检查,以防止用户选择您不希望他们使用的其他字段)