我刚刚从rails 3升级到rails 4.2。到目前为止,除了attr_accessible
的一个问题外,一切都很好。之前在rails 3中,我有一些attr_accessible
,其中:as
参数定义如下
attr_accessible :customer_id,:country_id, :city_id, :user_id, :as => [:default, :admin]
attr_accessible :archive, :as => :admin
现在,在rails 4中,我可以在控制器中执行类似的操作,并根据用户是否为admin进行更新/创建。但我想知道是否有更好的方法或标准的方法来做到这一点?或者这是正确的方式?
private
def products_params
params.require(:product).permit(:customer_id,:country_id, :city_id, :user_id)
end
def products_params_admin
params.require(:product).permit(:customer_id,:country_id, :city_id, :user_id, :archive)
end
将其添加到您的Gemfile
以再次获得attr_accessible
:
gem 'protected_attributes'
IMO对于稳定的项目来说,这是一种合理的方式,但强参数更灵活,例如,可以根据对象状态传递属性。