轨道4:具有不同角色的update_attributes



在rails 3中,我们可以使用如下update_attributes

@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]

但在 rails 4 中,update_attributes不接受第二个参数。那么如何将上面的代码转换为在 rails 4 中工作呢?

我尝试过这样的事情

  @customer.update_attributes(customer_params)
private
  def customer_params
    params.require(:customer).permit(:fname, :lname, :status )
  end 

但是我不知道如何在更新属性时传递 rails 4 中的角色。我不能做这样的事情。

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

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

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

http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters

例如,控制器将具有

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

相关内容

  • 没有找到相关文章

最新更新