Ruby on rails Rails 4:使用不同的角色更新_属性

Ruby on rails Rails 4:使用不同的角色更新_属性,ruby-on-rails,ruby-on-rails-4,update-attributes,Ruby On Rails,Ruby On Rails 4,Update Attributes,在Rails3中,我们可以使用update\u属性,如下所示 @customer.update_attributes(params[:customer], :as => :default) or @customer.update_attributes(params[:customer], :as => :admin) 我们的可访问属性定义为 attr_accessible :fname, :lname, :as => [:default, :admin] attr_acce

在Rails3中,我们可以使用
update\u属性
,如下所示

@customer.update_attributes(params[:customer], :as => :default) 
or
@customer.update_attributes(params[:customer], :as => :admin)
我们的可访问属性定义为

attr_accessible :fname, :lname, :as => [:default, :admin]
attr_accessible :status, :as => [:admin]
但在Rails4中,update_属性不接受第二个参数。那么,如何将上述代码转换为在rails 4中工作

我试过这样的东西

  @customer.update_attributes(customer_params)

private
  def customer_params
    params.require(:customer).permit(:fname, :lname, :status )
  end 
但我不知道在更新属性时如何传递Rails4中的角色。我不能做这样的事

  @customer.update_attributes(customer_params, :as => :admin)

这在rails 4中是不允许的。那么我如何在rails 4中做类似的事情呢?

看看强参数。允许的属性应该在控制器而不是模型中确定

例如,控制器将具有

def customer_params
   if current_user.admin?
     params.require(:customer).permit(:fname, :lname, :status)
   else
     params.require(:customer).permit(:fname, :lname)
   end
end

def update
  @customer.update_attributes(customer_params)
  ...
end