rails数据库字段安全性

时间:2012-08-23 10:00:05

标签: ruby-on-rails security field

在此输入代码rails

@user = User.new(params[:id])
@user.update_attributes(params[:user])
# params[:user] = {:admin => true, :name => "stackoverflow", ...}

以防万一 :admin仅允许服务管理员。

开发人员没有为管理员制作(就像有些用户强行插入一样。

我希望某些字段只允许有人获得许可(不是普通用户)

(在旧时代,我强行插入。 public tumblr无法更改为私有tumblr,但可以通过插入soem代码行来实现)

1 个答案:

答案 0 :(得分:0)

您要搜索的是attr_accessible。

来自http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html

class AccountsController < ApplicationController
  include ActiveModel::MassAssignmentSecurity

  attr_accessible :first_name, :last_name
  attr_accessible :first_name, :last_name, :plan_id, :as => :admin

  def update
    ...
    @account.update_attributes(account_params)
    ...
  end

  protected

  def account_params
    role = admin ? :admin : :default
    sanitize_for_mass_assignment(params[:account], role)
  end

end

注意: 这只适用于rails&gt; 3.0。如果您的版本小于3,则可以查看ryan bate的dynamic attr accessible cast