Ruby on rails 4 将Rails 3.2升级到Rails 4和Params

Ruby on rails 4 将Rails 3.2升级到Rails 4和Params,ruby-on-rails-4,Ruby On Rails 4,我使用本教程将我的项目从Rails3升级到Rails4: 我有一个模型: class Test < ActiveRecord::Base validates :content, :presence => true, :length => { :minimum => 2 } validates :name, :presence => true, :length => { :minimum => 2 } validates

我使用本教程将我的项目从Rails3升级到Rails4:

我有一个模型:

  class Test < ActiveRecord::Base
    validates :content, :presence => true, :length => { :minimum => 2 }
    validates :name, :presence => true,    :length => { :minimum => 2 }
    validates :value, :presence => true      
  end
得到

  WARNING: Can't mass-assign protected attributes for Achievement: name, content, value
  (0.2ms)  BEGIN
  (0.2ms)  ROLLBACK
=> #<Test id: nil, name: nil, content: nil, value: nil, created_at: nil, updated_at: nil> 
要配置/application.rb,我升级的项目将运行良好。但这不正常,因为在空的rails4中,这一行被删除了

我忘记升级了什么,或者我必须做什么,使升级后的项目像使用rails4创建的空项目一样工作,而不使用config.activerecord

UPD
raw_params={:name=>“asdasd”,:content=>“asdasdasd”,:value=>5}
=>{:name=>“asdasd”,:content=>“asdasdasd”,:value=>5}
2.0.0dev:002>params=ActionController::Parameters.new(原始参数)
=>{“名称”=>“asdasd”,“内容”=>“ASDASDSD”,“值”=>5}
2.0.0dev:003>test=test.create(参数许可证(:名称,:值,:内容))
警告:无法为成就批量分配受保护的属性:名称、值、内容
(0.2ms)开始
(0.2ms)回滚
=> # 

在Rails 4中,
attr\u accessible
不再用于批量分配检查。批量分配是指通过传递散列值来创建或更新模型对象的实践。在Rails 4中进行质量分配时,必须指定允许哪些参数,哪些参数不允许。这是出于安全原因


请看一看存储库,它简要说明了Rails 4中的大规模分配安全性是如何工作的。特别是查看在控制器外部使用

是否在控制器中添加了参数?@NickGinanto是的,但我在控制台中键入Test.create时不使用控制器。也许这可以帮助@NickGinanto我查看了它。这是有用的,但我试图发现,为什么rails4显示rails3错误。在我用rails4应用程序创建的空应用程序中,此批量分配效果良好。在应用程序中,从3.2升级到4.0,效果不好。我没有看到更新的帖子。谢谢我将研究Controllers.2.0.0dev:001>raw_参数={:name=>“John”,“content=>“Dorrow”,“value=>4}=>{:name=>“John”,“content=>“Dorrow”,“value=>4}2.0.0dev:002>params=ActionController::parameters.new(raw_参数)=>{“name=>“John”,“content”=>“Dorrow”,“value=>4}2.0.0dev:003>params.class=>ActionController::Parameters 2.0.0dev:004>a=Test.create(params.permit(:name,:content,:value))警告:无法为成就批量分配受保护的属性:名称、内容、值oh lol。
  WARNING: Can't mass-assign protected attributes for Achievement: name, content, value
  (0.2ms)  BEGIN
  (0.2ms)  ROLLBACK
=> #<Test id: nil, name: nil, content: nil, value: nil, created_at: nil, updated_at: nil> 
config.active_record.whitelist_attributes = false
raw_params = {:name => "asdasd", :content=>"asdasdasd", :value=>5} 
=> {:name=>"asdasd", :content=>"asdasdasd", :value=>5} 
2.0.0dev :002 > params = ActionController::Parameters.new(raw_params)
=> {"name"=>"asdasd", "content"=>"asdasdasd", "value"=>5} 
2.0.0dev :003 >  test = Test.create(params.permit(:name, :value, :content))
WARNING: Can't mass-assign protected attributes for Achievement: name, value, content
 (0.2ms)  BEGIN
 (0.2ms)  ROLLBACK
=> #<Test id: nil, name: nil, content: nil, value: nil, created_at: nil, updated_at: nil>