Ruby on rails Rails 4:使用不同的角色更新_属性
在Rails3中,我们可以使用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
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