代码之家  ›  专栏  ›  技术社区  ›  Sam å±±

动态生成对象、ruby、rails的属性

  •  0
  • Sam å±±  · 技术社区  · 15 年前

    给定这些参数:

    例:1

    {:field => 'admin', :id => "1"}
    

    例:2

    {:field => 'client', :id => "1"}
    

    {: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
    

    为什么不发送has with params并更新 update_attributes(params[:user]) ? 因为用户属性是受保护的,这样更新布尔值就更容易了。

    1 回复  |  直到 15 年前
        1
  •  1
  •   coder_tim    15 年前

    我会这样做:

    @user = User.where("#{params[:field]} = ?", params[:id]).first if ["admin", "client", "partner"].include?(params[:field])
    

    (“包括?”是一种安全检查,防止用户选择您不希望他们选择的其他字段)

    推荐文章